Мне нужен дизайн, где я могу хранить более одного значения в одном столбце - PullRequest
0 голосов
/ 10 октября 2019

Я занимаюсь проектированием онлайн-банкинга с весны MVC. У клиента будет один уникальный идентификатор, но он может иметь более одной учетной записи. Как и в случае с CustomerID, в банке может быть несколько счетов. Поэтому я проектирую таблицу с атрибутами:

CustomerID, AccountNumber, где CustomerId будет первичным ключом.

Пожалуйста, предложите, как проектировать базу данных.

Ответы [ 3 ]

2 голосов
/ 10 октября 2019

Встраивание нескольких значений в одно и то же поле нарушает принцип атомарность и, следовательно, первую нормальную форму. Вместо этого следует использовать две таблицы:

Customer:

  • CustomerID (первичный ключ)
  • другие поля клиента

Учетная запись:

  • AccountNumber (первичный ключ)
  • CustomerID (внешний ключ, который ссылается на таблицу Customer)
  • другие поля учетной записи

Таким образом, один клиент может иметь одну строку в таблице Customer и более одной строки в таблице Account.

1 голос
/ 10 октября 2019

Это хороший пример, в котором вы могли бы иметь две связанные друг с другом таблицы - одну для клиентов и одну для учетных записей. Один клиент может иметь несколько учетных записей, поэтому это отношение один ко многим. Рассмотрим приведенные ниже таблицы:

Customers:
CustomerId(primary key), (other columns...)

Accounts:
AccountId, CustomerId(foreign key), AccountNumber

Присоединяя эти таблицы, вы можете иметь клиентов и их учетные записи в одном представлении:

SELECT CustomerId, AccountNumber FROM Customers, Accounts WHERE Customers.CustomerId=Accounts.CustomerId
0 голосов
/ 10 октября 2019

Вы можете использовать некоторый разделитель, такой как запятая (,), точка с запятой (;) и т.д., чтобы поместить несколько значений в один столбец. Но вы можете сделать это по-другому. Вы можете создать таблицу AccountDetails, где первичным ключом будет AccountNumber, а внешним ключом будет CustomerId.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...