EDIT1: попытался прояснить вопрос, переименовав таблицы и их отношения.
РЕДАКТИРОВАТЬ 2: Пожалуйста, не смотрите, какой тип данных я держу в трех таблицах БД. Они были составлены на лету. Это НЕ мои сценарии реального мира (и нет, я не могу говорить о своих данных реального мира .. на самом деле это 1 родитель и 6 детей). Пожалуйста, просто игнорируйте, какой тип данных, и просто посмотрите на тот факт, что некоторые данные требуются.
EDIT3: два FK являются отношениями 0 или 1 к 1. НЕ 0 для многих. Не 1 к 1. Я пытаюсь избежать отношения 0 или 1 к 1 к отношению 1 к 1, поэтому мне не нужно иметь ВНЕШНИЕ СОЕДИНЕНИЯ, а вместо этого ВНУТРЕННЕЕ СОЕДИНЕНИЕ.
Вопрос: мне нужно знать, хорош ли / плох / плох / предложен проект базы данных
Проблема: сегодня я пытался создать индексированное представление , но не смог, потому что мои таблицы имеют внешние соединения. Вздох. Так что мне было интересно, могу ли я исправить это так, как показано ниже:
- Три стола.
- table_User имеет FK для table_Address
- table_User имеет FK на table_Vehicle
- и т.д ..
и таблицы B и C (которые теперь работают как справочные таблицы) имеют ..
- Id INT IDENTITY PK
- Описание NVARCHAR (100) NULLABLE
замечаете обнуляемый? таким образом, что-то в table_User не существует в table_Address ... поле равно нулю (из-за внутреннего соединения).
Раньше я делал это LEFT OUTER JOIN, поэтому, если в table_b не было данных, я получу нулевые результаты для каждого поля.
Я приведу несколько примеров данных здесь ...
Table_User
- ID: 1, имя: Фред, AddressID: 1 (NULL)
- ID: 2, Имя: Джо, AddressID: 2 (1 улица Смита .....)
- ID: 3, Имя: Джейн, AddressID: 2 (1 улица Смита .....)
Table_Address
- ID: 1, описание = NULL
- ID: 2, Описание = 1 Смит-стрит
и т.д.
Итак, наконец, я могу поместить все это в индексированное представление. (в моем сценарии из реальной жизни около 8 таблиц).
ПРИМЕЧАНИЕ. БД - это Microsoft Sql Server 2008, но это может быть для любой БД.
Q1: этот дизайн кажется нормальным?
Q2: Так что я делаю здесь, я нормализую данные, верно? удерживая внутренние соединения вместе.
Q3: И наконец, если это нормально ... могу ли я также удостовериться, что данные в таблицах уникальны (например, адреса улиц), имея некоторые уникальные ограничения или ключи или индексы или что (i ' я не уверен в правильной терминологии).
спасибо гуру!