При разработке моей базы данных я создал адреса как модульную систему. В одной таблице есть AddressID
, а в остальных таблицах адресов есть строка как для AddressID
, так и для их типа информации (например, номер телефона, адрес электронной почты, физический адрес и т. д.). Это делается для экономии места и добавления расширяемости для адресов, которые могут не иметь информации для каждого столбца, и будущих адресов, которые могут содержать больше информации, чем я ожидаю.
Другие объекты в базе данных имеют столбец для AddressID
(например, таблицы InsuranceCompany
и BranchOffice
и т. д.). Когда я вставляю новую строку в один из этих объектов, мне нужно указать AddressID
. Мне интересно, как лучше всего это спроектировать? Могу ли я иметь представление со всеми различными типами информации (номер телефона, физический адрес и т. д.) в виде столбцов, а затем сначала выполнить вставку в представление и получить вывод AddressID
для вставки в объект InsuranceOffice
? Должен ли я использовать хранимую процедуру?
Table 1 - Address
AddressID int identity
Table 2 - PhoneNumber
AddressID int
PhoneNumber varchar(10)
Table 3 - PhoneNumberForeignPart
AddressID int
CountryCode varchar(5)
PhoneNumberSuffix varchar(5)
Table 4 - PhoneNumberExtenstion
AddressID int
PhoneNumberExtension varchar(5)
Table 5 - EmailAddress
AddressID int
EmailAddress varchar(50)
...
Table 10 - InsuranceCompany
InsuranceCompanyID int identity
InsuranceCompanyName varchar(40)
AddressID int
Disabled bit
Спасибо.
InsuranceCompany
. Это нормально иметьnull
полей, когдаnull
что-то означает (например, наличие Street1, Street2 и Street3 в одной таблице — это нормально; Street2 и Street3 почти всегда будут нулевыми — вы бы не поместили их в другую таблицу, не так ли? ?). - person Cᴏʀʏ   schedule 27.05.2016NULL
при добавлении столбца. - person Eric S   schedule 27.05.2016