2015-07-10 2 views
1

Его быстрый вопрос:Добавление столбца в определенном месте строки

У меня есть таблица пользователя, в которой есть поля, имя, адрес и books_bought. books_bought - это внешний ключ, а его значение - некоторые ПК из другой таблицы. Теперь после 1-й вставки я заполнил все эти поля, но после второго INSERT я хочу добавить только дополнительные books_bought, чтобы создать массив значений books_bought?

+0

Bad реляционная дизайн. Должны иметь «пользовательскую таблицу», «таблицу книг» и «таблицу продаж». Продажи показывают ассоциацию пользователей и книг как «купленные книги» – xQbert

ответ

1

Вы делаете это неправильно - это отношения one-to-many, то есть многие книги, купленные одному пользователю. Вам нужно иметь внешний ключ на стороне , поэтому вместо того, чтобы иметь внешний ключ для books_bought в таблице users, добавьте внешний ключ к пользователям в таблице books_bought.

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

1

У вас не должно быть более одной книги в ячейке books_bought, поскольку она будет нарушать ограничение атомарности для таблиц базы данных. У вас должна быть отдельная запись для каждого book_bought. Это вызовет много избыточной информации как имя, адрес будет повторяться для каждой книги, купленной определенным человеком.

Чтобы решить эту проблему, вы должны разделить таблицу на что-то вроде этого: R1 (primary_key, имя, адрес) и R2 (foreign_key, books_bought) Здесь foreign_key относится к primary_key из R1

+0

Думаю добавить таблицу продаж, в которой есть идентификатор книги и поля идентификатора пользователя, поэтому каждая новая покупка будет записана там, и когда мне нужна информация о том, какую книгу купить, я буду искать там. Это лучший дизайн? – nhrnjic6

+0

Да, это лучший дизайн. Итак, в основном у вас будет три таблицы. Таблица 1 (идентификатор пользователя, bookid), таблица2 (имя пользователя, имя, адрес) и таблица 3, о которых вы упомянули в своем вопросе, упоминается books_bought. Надеюсь, вы поняли это. Я не очень хорошо объясняю вещи. :П –

Смежные вопросы