Я пытаюсь решить, должен ли я нажимать конкретный столбец в свою собственную таблицу или если я должен использовать другой метод или ограничение какого-то рода.SQL Server, чтобы нормализовать это или нет?
Допустим, у меня есть таблица вроде:
tbl_Location
LocationID PK int
Address varchar(100)
City varchar(50)
State varchar(50)
Еще другая таблица, как:
tbl_Store
StoreID PK int
StoreName varchar(50)
LocationID int FK
Вопрос 1: Так магазин должен иметь в одном месте, а не более чем один. Является ли это массовое убийство, чтобы подтолкнуть их в другую таблицу, и создать ограничение, которое отключает ту же StoreID быть более чем в одной строке, например:
tbl_StoreLocation
StoreID int
LocationID int
Вопрос 2: Есть ли преимущество по-прежнему с использованием идентичности PK/auto increment, если я должен был поставить это в свою таблицу?
В редком случае местоположение может быть удалено из таблицы tbl_Location. Если он удален, в методе один (все в одной таблице), мне нужно установить для LocationID значение NULL. Второй метод, мне придется использовать каскад.
Чтобы еще больше усложнить ситуацию, магазины могут иметь продукты, а LocationID - их местоположение по умолчанию. При создании продукта он по умолчанию использует свой идентификатор LocationID из tbl_Store, или если я разбиваю его на другую таблицу, таблицу tbl_StoreLocation. Так что толкает это дальше, например:
tbl_Product
ProductID PK int
StoreID FK int
ProductName varchar(50)
LocationID fk int <-----
Или я опять (И каждый продукт может иметь только одно местоположение):
tbl_ProductLocation
ProductID int
LocationID int
Я читал о более глубоких фазах нормализации, но что Мне нужно понимание понимания - это анализ времени/выгоды/структуры для чего-то такого простого.
Как вы думаете?
Вы использовали бы отдельную таблицу ТОЛЬКО, если бы было несколько местоположений. Без исключений. – Misunderstood
@ Понятно, спасибо. Я всегда делал это именно так, но после прочтения массивного документа о нормализации это испортило мой мозг :) – user1447679
Должен ли быть FK? Есть те, которые говорят, что это не требуется для 3NF, но я поместил список допустимых значений в FK. – Paparazzi