0

У меня есть четыре таблицы Store, Employee, Customer, Address. Я связал первые три таблицы с Address. Теперь я хочу удалить это FK и ссылаться на эти таблицы на Address. Как мне это сделать?Удаление внешних ключей и справочных таблиц в SQL Server

Структура таблицы:

магазин:

StoreID(PK), BranchName 

Сотрудник:

EmpID(PK), Name 

Клиент:

CustID(PK), Name 

Адрес:

AddID(PK), 
    ID(FK to Store.StoreID, Employee.EmpID, Customer.CustID), 
    AddressDetail 

Я хочу удалить FK на Address.ID и просто ссылаться на него в три таблицы.

+0

См. Http://stackoverflow.com/a/190306/119477 У вас есть три варианта. Мне нравится TPC. Но похоже, что вы хотите TPT, а это значит, что вам нужна другая таблица. –

+0

Мне интересно, почему кто-то решил сделать этот проект! – FLICKER

ответ

1

Вы можете удалить ограничение FOREIGN KEY с помощью инструкции ALTER TABLE. Например,

ALTER TABLE [Address] DROP CONSTRAINT [FK_Address_Store] 

Чтобы удалить столбец, снова оператор ALTER TABLE.

ALTER TABLE [Address] DROP COLUMN [ID] 

Модель данных, которую вы пытаетесь реализовать, совсем не ясна. Сколько адресов может быть связано с клиентом? Только один или более одного? Можно ли связать тот же адрес с Клиентом и Работником? Может ли конкретный адрес быть связан с несколькими Клиентами?

В моделях отношений с сущностями «Адрес» обычно является составным атрибутом, а не сущностью. Часто Адрес является многозначным атрибутом (например, у Клиента может быть более одного адреса или более одного номера телефона). Иногда Адресами будет особый тип адреса (адрес доставки, адрес фактуры, адрес офиса, домашний адрес), так же как номера телефонов могут быть типа (основной, мобильный, офис, факс и т. Д.)

Без понимания модели данных вы не можете дать рекомендации относительно изменений, которые вы должны внести в таблицы базы данных для реализации модели.

+0

Если один адрес для каждой записи, я должен добавить столбцы для адреса во все таблицы? – DhavalR

+0

Или добавьте столбец внешнего ключа в Employee, [Addresss_AddID] с тем же типом данных (int?), Что и столбец AddID в таблице адресов. Определите ссылку [FK_Emplouyee_Address] внешнего ключа [Address_AddID] [Адрес] ([AddID]). Вы можете повторить тот же шаблон для [Customer] и [Store], добавляя столбец внешнего ключа и ограничение внешнего ключа. – spencer7593

+0

Это означает, что я меняю 'Employee' на' EmpID (PK), AddID (FK Address.AddID), ... '? И для остальных. – DhavalR

Смежные вопросы