2016-06-02 2 views
0

Я новичок в sql и mysql (фактически, я использую реализацию mariadb). Мне нужно сохранить переменный размер строк в некотором столбце. Пример: может принимать значениеХранить переменный размер строк в некотором столбце

'one' или ['one', 'two'], или ['one', 'two', 'three'], как тип массива в питоне или других языках высокого уровня.

Какой тип данных (если таковой существует) можно использовать?

+0

Вы пробовали? Эти ответы должны помочь (в нижней строке, однако, лучше всего использовать другую таблицу): http://stackoverflow.com/questions/6360739/how-to-store-array-or-multiple-values-in- одна колонка http://stackoverflow.com/questions/5341149/store-array-of-numbers-in-database-field –

ответ

0

Существует не тип данных, чтобы делать то, что вы хотите сделать напрямую. Скорее, вы сохраните свой «список строк с переменным размером» в другой таблице и используйте столбец из существующей таблицы, чтобы ссылаться на эту другую таблицу. Это называется объединением.

Например, если у вас есть таблица структурирована как так ...

TABLE: Shelf 
id : int 
location : varchar(50) 
books : int 

И еще одна таблица

TABLE: Books 
bookId: int 
Title: varchar(80) 

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

SELECT s.location, b.title FROM Shelf s 
INNER JOIN Books b on s.books = b.bookId 
WHERE s.location = 'x' 
ORDER BY b.title; 

Существует гораздо лучшее объяснение этого в https://www.sitepoint.com/understanding-sql-joins-mysql-database/

+0

Спасибо! Однако я не уверен, что это то, что я должен сделать. Это означает, что я должен создать таблицу с каким-то уникальным именем, которое содержит строку записей CHAR. Разве это не много ручной работы? И как следует обращаться к таблице с именем переменной (имя, указанное в базовой таблице)? –

+0

Много ручной работы - субъективный термин. Для базы данных, такой как MySql, объединения в другие таблицы - это то, как вы обрабатываете многозначные данные. Если вам действительно нужно свернуть все в один столбец, вам нужно найти другой тип базы данных. Многозначные базы данных, которые приходят на ум, - это U2 (unidata) или OpenQm. Ниже приведены некоторые ссылки: http://www.openqm-zumasys.com/openqm/what-is-multivalue/ и http://nosql-database.org/ – Bill

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