2014-02-14 4 views
1

Возможно ли в MySQL иметь столбец, совместно используемый с 2 ​​или более строками, например, тип объединения C++? Является ли то, что я ищу, без лишнего пространства и производительности?Union-like column в MySQL

+2

Вы хотите что? Объясни подробней. – fancyPants

+0

Могу ли я спросить, почему вам нужно несколько значений в одном столбце вместо того, чтобы просто помещать их в несколько столбцов? –

+0

Если значение одного столбца относится к строке другой таблицы (через отношение внешнего ключа), все значения столбцов строк одной таблицы могут совместно использовать одно и то же значение другой таблицы. – Smutje

ответ

3

То, что вы описываете, как «C++ типа накидной» лучше объяснено в ваш комментарий:

У меня есть таблица много строк. Каждая строка содержит 5 столбцов. Теперь я хочу, чтобы строки # 1 и # 2 делили столбец №1. Когда я говорю «доля», я имею в виду: а) если значение изменено в одном, оно изменится для другого. б) Пространство не будет двойным.

Что вы описываете, это самая основная часть базы данных: нормализация и реляционные данные.

У вас есть таблица Страна:

ID=1, countryname="Amurika" 

и город:

ID=1,countryid=1, cityname="Boston" 
ID=2,countryid=1, cityname="New York" 
ID=3,countryid=1, cityname="Boise" 

Если вы хотите, чтобы ваши записи вы делаете:

SELECT cities.name, countries.countryname 
FROM cities INNER JOIN countries on countries.id = cities.countryid 

Вы получаете записи:

name  countryname 
------  ----------- 
Boston  Amurika 
New York Amurika 
Boise  Amurika 

Вы заметите, что «Amurika» хранится в одном месте, и если вы обновите его один раз:

UPDATE countries SET countryname="America" where id=1 

Вы теперь получить:

name  countryname 
------  ----------- 
Boston  America 
New York America 
Boise  America