Концептуальный процесс заполнения связанных таблиц в базе данных (MySql) из файла CSV - PullRequest
3 голосов
/ 22 апреля 2010

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

Как импортировать файл CSV, чтобы поля соответствовали их связанной таблице?

Скажем, вы пытались создать базу данных пива и у вас был файл CSV с каждой строкой в ​​виде записи.

Заголовок: пивовар, название пива, страна, город, штат, beer_category, beer_type, alcohol_content

Запись 1: Анхойзер-Буш, Будвайзер, США, Сент-Луис, Мо, Бледный лагер, Regular, 5,0%

Запись 2: Анхойзер-Буш, Bud Light, США, Сент-Луис, Мо, Бледный лагер Легкий, 4,2%

Запись 3: Пивоваренная компания Миллер, Miller Lite, Соединенные Штаты, Милуоки, WI, Бледный лагер, Свет, 4,2%

Вы можете создать стол "Пивовар" и стол "Пиво". При импорте как вы соединяете первичные ключи между таблицами?

1 Ответ

3 голосов
/ 22 апреля 2010

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

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

например, Добавление записи 1 в таблицу Beer завершится неудачно, если вы уже не добавили Anheuser-Вставьте в таблицу пивоваров.

Предложение по настройке столов:

Brewer
    id         bigint
    name       varchar(50)
    country    varchar(50)
    state      varchar(10)
    city       varchar(50)


Beer
    id         bigint
    brewerId   bigint
    name       varchar(70)
    category   varchar(50)
    type       varchar(50)
    alcohol    decimal(3,1)

Set Brewer.Id as the Primary Key of the Brewer table.
Set Beer.Id as the Primary Key of the Beer table.
Then create a foreign key relationship between Brewer.Id = Beer.brewerId

Затем добавьте пивоваров вручную (потому что их не так много)

Brewer
    1    Anheuser-Busch            United States    Mo    St. Louis
    2    Miller Brewing Company    United States    WI    Milwaukee

Затем возьмите CSV-файл, чтобы заменить все данные пивовара на соответствующий идентификатор пивовара, и используйте его для заполнения таблицы пива:

Beer
    1    1    Budweiser    Pale lager    Regular    5.0
    2    1    Bud Light    Pale lager    Light      4.2
    3    2    Miller Lite  Pale lager    Regular    4.2

Итак: brewerId связывает каждое пиво с пивоваром впивоваренный стол.Это внешний ключ - каждое пиво автоматически получает все данные пивовара, потому что его brewerId совпадает с идентификатором пивовара (и вы устанавливаете это отношение при создании таблиц).

  • Пиво 1 (Budweiser) принадлежитпивовару 1 (Anheuser-Busch)
  • Пиво 2 (Bud Light) принадлежит пивовару 1 (Anheuser-Busch)
  • Пиво 3 (Miller Light) принадлежит пивовару 2 (Miller)

Это позволяет вам делать действительно крутые суффи.Скажем, Миллер был куплен другой компанией ... все, что вам нужно сделать, это изменить детали в таблице Брюера, и вуаля - все пиво, которым владел Миллер, теперь принадлежит новому пивовару.Вы также можете рассчитать объем продаж по пивовару, штату и т. Д.

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

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