какой тип базы данных подходит для массивов? - PullRequest
0 голосов
/ 18 июля 2010

я хочу, чтобы моя база данных поддерживала одну компанию, имеющую много пользователей, как я могу это сделать?
пример

таблица пользователей (UID, имя пользователя, пароль)
таблица компании (CID) , название компании, пользователь этого владельца компании

как я могу это сделать? что я должен делать ? я должен сделать массив в php как 1241,423,4123 * uid, который будет вставлен в строку пользователя? или есть идея получше?

Ответы [ 3 ]

10 голосов
/ 18 июля 2010

Если вы хотите, чтобы у каждого пользователя была одна (и никогда больше) компания, вы должны иметь:

  • user table
    • uid
    • username
    • ...
    • company_id
  • company таблица
    • company_id
    • company_name
    • ...

Тогда user.company_id будет иностраннымключ , который ссылается на company.company_id.

И затем вы сохраняете:

  • Одна строка в user для каждого пользователя
    • Ссылка на идентификатор нужной компании для этого пользователя
    • , который является company_id правой строки в таблице company.
  • И одна строка длякаждая компания в company

В таблице компании не хранится информация, относящаяся к пользователю, и, поскольку каждый пользователь "указывает" на компанию, компания может иметь несколько пользователей.


Хранение данных в виде массива, как вы предложили, определенно не очень хорошая идея - просто не так, как реляционные данные.abase works.


Если у каждого пользователя может быть несколько компаний, а у каждой компании может быть несколько пользователей, вам нужно будет добавить третью таблицу ( присоединить таблицу) , для каждого пользователя (ей) указывается, к какой компании (-ям) они присоединены:

  • user таблица
    • uid
    • username
    • ...
  • company таблица
    • company_id
    • company_name
    • ...
  • user_company таблица
    • uid
    • company_id

В этой ситуации в таблице company нет связанных с пользователем материалов, а в таблице user нет связанных с компанией материалов: ссылкамежду ними находится в таблице user_company.

Конечно, user_company.uid будет внешним ключом для user.uiduser_company.company_id будет внешним ключом для company.company_id.

1 голос
/ 18 июля 2010

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

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

Конечно, это применимо, только если вы хотите подключить нескольких пользователей к нескольким компаниям (отношение «M-N»). Если вы хотите подключить несколько пользователей к одной компании, просто добавьте столбец для идентификатора компании для пользователя.

0 голосов
/ 18 июля 2010

Любая реляционная база данных - хороший путь.Посмотрите на MS SQL или MySQL .

...