У меня есть дизайнерская дилемма; С одной стороны (вариант 1) я только создаю адресную таблицу один раз, но с другой стороны (вариант 2) кажется, что у него будут преимущества производительности ... меньше объединений и меньше данных. Ребята, что вы думаете?SQL Database Design
ответ
Вариант 1 точно. Все ваши адреса должны быть в одном месте. Это также не должно препятствовать производительности. Вы можете ограничить адреса, возвращаемые оператором WHERE, когда вы запрашиваете данные.
Three customer addresses in one table or in separate tables?
Реферирование вышеупомянутой связи: Так как вы говорите, ваш адрес отношение клиента моделируются как один-ко-многим, я хотел бы использовать следующий пример одной таблицы адресов, в AddressType и EntityId FK. Использование этого метода позволит Entity (client/employee/contact) иметь много адресов.
CREATE TABLE Entity
(
ID int not null IDENTITY(1,1) PRIMARY KEY,
Name varchar(60) not null,
EntityType int not null
-- etc
)
CREATE TABLE Address
(
ID int not null IDENTITY(1,1) PRIMARY KEY,
EntityID int not null
CONSTRAINT FK_Entity_EntityID FOREIGN KEY References Entity(ID),
Street varchar(120) not null,
AddressType int not null
-- etc
)
Вариант Soooooo 1 без таблицы переходов .... – DonkeySticks
Этого недостаточно, чтобы представить случай, когда 1 адрес сопоставляется с N сущностями. Связь между сущностью и адресом - NxM. – Ivo
Вариант 1 лучше с точки зрения дизайна. Одна таблица должна иметь все адреса - и соответственно обновляться. Таким образом, вы можете легко создавать отношения между адресами и клиентом, сотрудниками и контактами (и все остальное на самом деле) и делать такие запросы, как: «выбрать все, что живет в X-адресе». Имейте в виду, что таким образом вам придется правильно поддерживать таблицу адресов - управлять повторяющимися адресами, убедиться, что адрес правильный и т.д.
С другой стороны, в очень упрощенном примере использования, где вы просто хотите отображать Клиент, Сотрудник и Контактная информация, Адрес может быть столбцом свободного текста. Это избавит вас от необходимости правильно поддерживать адреса.
Все сводится к тому, что вам нужно в конце.
- 1. SQL Database layout/design
- 2. SQL Relational Database Design
- 3. Database Design SQL
- 4. sql database design for ecommerce
- 5. SQL Database Design - Профиль пользователя
- 6. SQL Database Design - Cache Tables?
- 7. sql database design default значение
- 8. sql database design - select & checkbox
- 9. job database design database
- 10. MySQL database database design
- 11. Database Design
- 12. Database Design
- 13. OO Design vs Database Design
- 14. Android SQLite Database Design
- 15. Категория Database Design
- 16. SQL Database Design Многие для многих
- 17. SQL Database Design, рекурсивные отношения родитель-ребенок?
- 18. ERD Diagrams (SQL and Database design)
- 19. SQL Database Design - небольшой процент строк уникальных
- 20. SQL Database Design для тестовых данных
- 21. SQLite3 Database Design
- 22. Повышение Database Design
- 23. Compound field database design
- 24. MySQL Design Database Предложения
- 25. Realm Database Design
- 26. Деятельность Database design
- 27. Contact Manager Database design
- 28. Форма DataBase Design
- 29. Database Design webapp
- 30. Database Design Внешние ключи
У вас есть несколько адресов для каждой стороны? – Harsh
Да, я знаю, его отношение ко многим отношениям – DonkeySticks
@ eugv86 Как у вас есть отношения друг к другу между клиентом/сотрудником/контактом и адресом? В большинстве сценариев одному клиенту/сотруднику/контакту выделяются два адреса. – HappyCoding