Я создал систему php, которая генерирует 150 «серийный номер» для каждого продукта.
Теперь я хочу сохранить эти серийные номера в базе данных. Я нашел несколько способов сделать это:
products_serialNumber
и сохранить каждый серийный номер в 1 записи и связать его с продуктами, используя product_id
ключ.Если я сделаю это, у меня будет много данных, которые никто не сможет использовать. Но получение данных таким способом проще и быстрее.
product_serialNumbers
и сохраните массив серийных номеров для каждого продукта и снова используйте ключ «product_id».Если мне так нравится, у меня будет запись серийных номеров для каждого продукта, но я должен использовать больше foreach
а также for loop
функции для извлечения массива данных и переменных, чтобы использовать там, где мне нужно, и использовать много памяти. Я ограничен до 64 м, используя память.
Вы можете хранить JSON …
Нормализация — это метод, используемый для оптимизации структуры базы данных. Правило «Первая нормальная форма» (1NF) определяет, что каждый столбец должен содержать одно значение, что нарушается при хранении многозначных документов JSON.
Создать таблицу с полем JSON
CREATE TABLE `product_serialNumbers` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
`serialNumbers` json DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
Добавление данных JSON
INSERT INTO `product_serialNumbers` (`title`, `serialNumbers`)
VALUES (
'ECMAScript 2015: A SitePoint Anthology',
'["ac111", "ab177", "ac14521"]'
);
JSON также может быть создан с помощью:
//returns [1, 2, "abc"]:
SELECT JSON_ARRAY(1, 2, 'abc');
//returns {"a": 1, "b": 2}:
SELECT JSON_OBJECT('a', 1, 'b', 2);
//returns ["a", 1, {"key": "value"}]:
SELECT JSON_MERGE('["a", 1]', '{"key": "value"}');
Поиск данных JSON
//all product_serialNumbers with the 'ac14521' serialNumbers:
SELECT * FROM `product_serialNumbers`
WHERE JSON_CONTAINS(serialNumbers, '["ac14521"]');
Если вы используете ORM базы данных, такие как Mysql. Наилучшим выбором является использование решения 1, потому что хранение и выборка связанных данных является наиболее важной причиной использования баз данных ORM.
Но решение 2 хорошо, когда вы используете базы данных NoSql, такие как MongoDB или другие базы данных базы документов.
Решение 1 хорошо, потому что в обоих случаях будет занято пространство данных.
Если вы выберете Решение 2 или сохраните его в json, каждый раз, когда вы извлекаете данные, потребуется анализировать json, который будет относительно медленным и потреблять память. Итак, воспользуйтесь SQL-соединениями.
Решение 1 будет быстрее и дешевле с точки зрения потребления памяти. И не беспокойтесь о космосе, в наше время космос — это не проблема, а эффективность. И если вы считаете, что данные бесполезны, зачем вы их храните?