У меня наверное банальный вопрос, но нужен совет.
Я работаю в СУБД центра, где есть два разных типа клиентов: назовем их клиентОбычный и клиентСпециальный.
Конечно, у них есть общие атрибуты, такие как имя, фамилия, дата рождения ... И тогда клиентСпециальный имеет атрибуты, которых нет у клиентОбычный и наоборот.
Затем customerSpecial и customerOrdinary подключаются к разным таблицам: клиентОбычный подключается к table1, а клиентСпециальный подключается к table2 и table3.
На данный момент, зная это, у меня есть 2 возможных способа:
СПОСОБ 1:
создайте единую таблицу «customer» со всеми общими атрибутами, а затем две другие таблицы customerS и customerO с тем же PK и другими столбцами.
CUSTOMER
ID DATEOFBIRTH. NAME. SURNAME. TYPE
01. 1989/07/12. Sal. Dallow. S
02. 1987/09/12. Kreb. Krusty. O
03. 1999/01/02. Josh. Milly. S
CustomerO
ID. NumberOfCr. .....
02. 18273. .....
Customer S
ID. DateAsmp. DateEnd. TypeCon
01. 2020/12/12. 2021/10/07. STN
03. 2020/11/22. 2020/12/30. PLS
ПУТЬ 2
Создайте сразу 2 разные и отдельные таблицы, CustomerO и CustomerS:
CustomerS
ID DATEOFBIRTH. NAME. SURNAME. DateAsmp. DateEnd. TypeCon
01. 1989/07/12. Sal. Dallow. 2020/12/12. 2021/10/07. STN
03. 1999/01/02. Josh. Milly. 2020/11/22. 2020/12/30. PLS
CustomerO
ID DATEOFBIRTH. NAME. SURNAME. NumberOfCr.
02. 1987/09/12. Kreb. Krusty. 18273.
Как вы думаете, какой подход мне следует придерживаться? Зачем? И самое главное, первый подход в чем-то неверен?
@SMor, а какой, по-твоему, лучше?
Я удалил sql-сервер, поскольку он конфликтовал с MySQL, а SQL Workbench - это среда разработки MySQL, а не SQL Server.






Вопрос зависит от того, нужны ли вам отношения внешнего ключа с «клиентом». И я предполагаю, что ответ - «да».
Это говорит о том, что первый подход лучше. Если вам не нужны отношения внешнего ключа для «обычных» и «специальных» клиентов, вы можете рассмотреть возможность хранения всех столбцов в одной таблице и не беспокоиться о значениях NULL.
Да, внешний ключ «CustomerO_ID» используется в двух таблицах (таблица 1 и таблица 2); в то время как внешний ключ «CustomerS_ID» используется в другой таблице (таблица 3). Вместо этого "CustomerID" fk никогда не используется в других таблицах. (Первый подход)
Нет никакой связи между таблицей и «клиентом» в целом, включая как тип S, так и тип O. Все отношения устанавливаются отдельно, либо с CustomerS, либо с customerO.
@ Дженни. . . Я подозреваю, что в вашей системе вам понадобятся связи между таблицами и customers в целом - транзакции, контракты или что-то в этом роде.
Нет, считайте, что «заказчик» - это просто пример, который я сообщил, чтобы упростить и обобщить мою проблему. так фейк, что мне не нужны отношения между таблицами и покупателем в целом