2015-03-05 4 views
0

Я пытаюсь создать сортировку БД для корзины покупок, где пользователи могут проверять определенные предметы, и я смогу увидеть, какие предметы у каждого есть, и я также смогу увидеть, кто конкретно элемент проверен.
Я также хотел бы иметь изображение для каждого элемента. (Не уверен, насколько эффективно это?)Array association and DB design

В настоящее время у меня есть что-то вроде этого:

CREATE TABLE person(
id CHAR(9) NOT NULL PRIMARY KEY, 
name VARCHAR(30) NOT NULL 
); 

CREATE TABLE items(
id CHAR(9) NOT NULL PRIMARY KEY, 
itemName VARCHAR(30) NOT NULL, 
category VARCHAR(30) NOT NULL, 
subcategory VARCHAR(30) NOT NULL, 
image LONGBLOB 
); 

CREATE TABLE person_items(
personID CHAR(9) NOT NULL, 
itemID CHAR(9) NOT NULL, 
FOREIGN KEY (personID) REFERENCES person(id), 
FOREIGN KEY (itemID) REFERENCES items(id) 
); 

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

ответ

0

Прежде всего, ваши идентификаторы в ваших таблицах должны быть INTEGER. Таблица отношений «person_items» позволяет установить связь n: m между человеком и предметами, что должно быть вашей целью, если я понял ваш вопрос.

Я предлагаю сохранить путь и имя файла изображения в вашем db, чтобы вы могли получить это значение и использовать его как ссылку или что-то подобное в своем приложении. Я бы не сохранил изображение как blob, потому что у вас много ненужной работы с заголовками и так далее. И если вы используете путь в db, вы легко сможете использовать разные форматы файлов. Просто мое мнение.

+0

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