Вопрос по организации данных в MySql

REMO

Guest
Вопрос по организации данных в MySql

Возможна ли такая конструкция данных в MySQL:

1 таблица

code | name
---------------
1001 | творог
1002 | кефир
.....................
nnnn | торт

2 таблица

name | adress | code
---------------------------
Петров | |

В код 2-ой таблицы засунуть массив кодов из первой таблицы, т.е. чтобы ячейча записи содержала массив с кодами?

И на сколько это оправдано по сравнению с таблицей в которой на против каждой фамилии по каждому продукту будет стоять 1 или 0?
 

Demiurg

Guest
это называется не массив а связка многие ко многим, реализуется созданием третей таблицы в которой будут пары первичных ключей из первых двух.
 

Falc

Новичок
REMO
Тебе надо делать таблицу-связку многие - ко многим

table1.code | table2.id
 

REMO

Guest
а где об этом можно поподробнее почитать? может пример где есть...
 

Demiurg

Guest
Как это называется - ты знаешь.
Где искать .... ну ты догадываешься.
 

REMO

Guest
нашел прочитал...

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

Видимо я что то не так понял.

Какой вид должен быть у третьей таблицы?
id_второй | а что дальше?

Хоть убейте не пойму ((
 

fixxxer

К.О.
Партнер клуба
Table: Male
male_id | male_name
1 | Vasya
2 | Petya
3 | Sasha

Table: Female
female_id | female_name
1 | Lena
2 | Olya
3 | Sveta

Table Fucked
male_id | female_id
1 | 1
1 | 2
2 | 3
3 | 1
3 | 3

Так понятно? :D
 

REMO

Guest
:) понятно, спасибо....

Тогда такой вопрос, от тех кто отстал от паровоза :)

Если в таблице Male 10 000 записей, то имеет ли смысл создавать такую структуру (т.е. еще две таблицы), или лучше в первой же таблице создать столбцы с Lena, Olya, Sveta, учитывая, что в таблице девушки записей будет максимум 20.
 

fixxxer

К.О.
Партнер клуба
и как ты себе представляешь поиск по таким столбцам?
не извращайся.
есть стандартные приемы, их и используй. по крайней мере, пока абсолютно не уверен, что твой способ в данной ситуации лучше.
 

REMO

Guest
да очень просто...
у тех, кто был партнером Sveta, стоит 1, у тех кто не был стоит 0... Соответственно выберем тех у кого 1 и все....

Я так думю, что при размере 2-ой таблицы 20 записей, все таки не имеет смысла организовывать связь, многие ко многим... Лучше оформить это дело столбцами... Хотя, может окажется, что и наоброт (
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: REMO
Я так думю, что при размере 2-ой таблицы 20 записей, все таки не имеет смысла организовывать связь, многие ко многим...
Не думай, у тебя это хреново получается. Пока слушай, что умные дяди говорят.
 

REMO

Guest
2SadSpirit

Я вроде не просил оценивать мои умственные способности... Я просил помочь... Если ты не понял в чем вопрос, так не зачем писать глупые ответы, с умным видом... Если знаешь слово мизантроп, это еще не говорит, о том, что у тебя хорошо получается думать....

Без обид ;)
 

chira

Новичок
REMO
конечно, если круг твоего общения постоянен, никто не умирает и не стареет и т.д. и т.п., структура с одной таблицей и 20 полями, возможна. Скажу больше: для некоторых запросов твой вариант будет работать быстее. Но не забудь учесть всякие изменения (инсерт, апдате, делит).
Тебе предложили классическое решение (3 таблицы).
Определи главную цель и прими решение, это мы у тебя (принять решение) никак не отнимем.
Сделай три таблицы и спи спокойно ...
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: REMO
Я вроде не просил оценивать мои умственные способности... Я просил помочь... Если ты не понял в чем вопрос, так не зачем писать глупые ответы, с умным видом... Если знаешь слово мизантроп, это еще не говорит, о том, что у тебя хорошо получается думать....

Без обид ;)
Я знаю ещё много умных слов.

Если ты не понял, в чём заключался мой ответ, то вот тебе два наводящих вопроса:
1) Напиши запросы ("Кто трахнул Свету", чтоб понятнее было) для случая предложенной тебе структуры с доп. таблицей и для структуры без доп. таблицы.
2) Что ты собираешься делать при необходимости появления 21ой записи?..
 

REMO

Guest
Автор оригинала: Sad Spirit
Я знаю ещё много умных слов.

Если ты не понял, в чём заключался мой ответ, то вот тебе два наводящих вопроса:
1) Напиши запросы ("Кто трахнул Свету", чтоб понятнее было) для случая предложенной тебе структуры с доп. таблицей и для структуры без доп. таблицы.
2) Что ты собираешься делать при необходимости появления 21ой записи?..
1) SELECT * FROM table1 WHERE sveta = 1
2) сделаю еще один столбец

Разве так сделать чем то плохо?
 

chira

Новичок
REMO
1. пришёл к тебе клиент Sad Spirit и утомил svetu до смерти ... (drop column ? а кто будет код исправлять?)
потом пришёл я с глупым вопросом "Кто это так Свету?"
2. народилась ноавя sveta опять же код SQL исправлять ? ...
 

.des.

Поставил пиво кому надо ;-)
REMO Вы пришли сюда спросить как правильно сделать? или пришли спросить и сделать по своему?
Если второе, то не тратьте свое и наше время.

В качестве пищи для размышления:

Выбрать надо всех кто имел Свету ИЛИ Олю.
Какие индексы будут в твоей таблице? Сколько индексов?

В качестве материала для изучения:
http://www.mysql.com/doc/ru/MySQL_indexes.html
 

shulga

Guest
Если для извращенцев:
я бы сделал так-
хранить в поле коды через запятую. Потом:

$fields=mysql_fetch_array(.....); // получил данные
$tmp_array=explode(',' , $fields
Код:
); // из поля все данные - массив
// ну а дальше- используйте массив
// есть также implode - объединение массива в строку, и соответственно можно записать в  базу


 удачи в извращениях!
 я тоже любитель извращений- стараюсь оптимизировать программу максимально, даже если это против всяких правил.
 

.des.

Поставил пиво кому надо ;-)
Если для извращенцев:
я бы сделал так-
хранить в поле коды через запятую. Потом:

$fields=mysql_fetch_array(.....); // получил данные
$tmp_array=explode(',' , $fields
Код:
); // из поля все данные - массив
// ну а дальше- используйте массив
// есть также implode - объединение массива в строку, и соответственно можно записать в базу


удачи в извращениях!
я тоже любитель извращений- стараюсь оптимизировать программу максимально, даже если это против всяких правил.[/QUOTE]
Очень Вас прошу, оставить всякие рекомендации при себе. Это форум не извращенцев и не для извращенцев. И вместо того чтобы гордиться своей неопытностью (или хуже невежеством) почитайте что-нибудь из теории.
 

shulga

Guest
Автор оригинала: .des.
Очень Вас прошу, оставить всякие рекомендации при себе. Это форум не извращенцев и не для извращенцев. И вместо того чтобы гордиться своей неопытностью (или хуже невежеством) почитайте что-нибудь из теории.
Тогда ответ профессионалу- я не считаю, что MySQL- "черный ящик" и будет делать то, что вы просите. Да, будет, но сколько времени это займет? Не знаю как ваша, но моя практика обработки баз данных показала, что оптимизация никогда не бывает вредной. Вопрос практический- пусть человек попробует. Да и заодно купит КНИГУ. Хотябы Лаура Томсон, Люк Веллинг - "Разработка приложений на PHP MySQL".
 
Сверху