Консультация № 144873
24.09.2008, 13:26
0.00 руб.
24.09.2008, 13:27
0 9 2
День добрый. Как сделать более профессионально.
База SQLite
Есть две таблицы:
Код:
 sqlite_exec ($id, "CREATE TABLE albums (id integer primarykey,
type TEXT,
artist TEXT,
album TEXT,
list TEXT,
link TEXT,
size TEXT,
user TEXT,
ip TEXT,
data TEXT,
deskr TEXT,
reserv1 TEXT,
reserv2 TEXT)");


Код:
 sqlite_exec ($id, "CREATE TABLE songs (id integer primarykey,
type TEXT,
artist TEXT,
songname TEXT,
preview TEXT,
link TEXT,
size TEXT,
time TEXT,
user TEXT,
ip TEXT,
data TEXT,
deskr TEXT,
reserv1 TEXT,
reserv2 TEXT)");

Как видно почти все поля SQL:
Код:
 .. link TEXT,
size TEXT,
time TEXT,
user TEXT,
ip TEXT,
data TEXT...

Одинаковы. Не лучше ли будет вынести их в отдельную таблицу? И потом по for_id определять кто и когда загрузил?

Потом для type сделать тоже таблицу
Код:
 
name_group TEXT,
data_create Text,
descr TEXT

Но как связать все до кучи не совсем представляю

Обсуждение

Неизвестный
24.09.2008, 13:34
общий
Что должно получится? Что делает программа?
Неизвестный
24.09.2008, 13:56
общий
это ответ
Здравствуйте, Ігор!
"Но как связать все до кучи не совсем представляю"
Зачем тебе их связывать?
Для выборки нужных полей созданных таблиц используй SELECT.
Неизвестный
24.09.2008, 14:05
общий
Вот именно: я не совсем и представляю какого вида должны быть запросы .
И стоит ли для
Код:
 size TEXT,
time TEXT,
user TEXT,
ip TEXT,
data TEXT

Создавать отдельную таблицу, или же оставить все как есть.
Неизвестный
24.09.2008, 16:43
общий
это ответ
Здравствуйте, Ігор!

как мне кажется, у вас довольно хорошая структура таблиц. Что касается хранения данных по песням и альбомам, а оставлять или не оставлять дублирующиеся колонки в обеих таблицах это уже ваше решение, но лично я бы оставил так как есть. Потому как в этом случае вы сможете указать ссылки на конкретную песню, и ссылки на конкретные альбомы. В том числе "время" в одной таблице это время звучания альбома, а в другом время - песни, т.е. несмотря на то что у этих полей одинаковые названия, но по сути в них будут хранится разные данные.

кроме того, может быть я чего то не то понял но в таблице songs у вас не хватает поля соответствия альбому где будет хранится id из таблицы albums



Неизвестный
24.09.2008, 17:27
общий
кроме того, может быть я чего то не то понял но в таблице songs у вас не хватает поля соответствия альбому где будет хранится id из таблицы albums


И не должно. Эти таблицы харнят СОВСЕМ разные данные.
В первой таблице хранятся альбомы и ссылки на их закачку
а во второй отдельные песни исполнителей и тоже ссылки но уже с превивом

Скажем в первой может храниться 10 альбомов даного исполнителя,
а во второй, скажем, только три песни этого же исполнителя.
Или же во второй таблице 20 песен какого-то исполнителя, а в первой может не быть и одного альбома.

Или в таком случае нужна еще одна база?
Вот просто я не знаю "как делают профессионалы"

Вот еще не знаю как поступить с "type" Это жанр. "РОк, поп, джаз.. и т.д."
Эти группы должны создаваться администраторм. Вот я и подумал хранить в этом поле for_id а в другой таблице описание этого "for_id"
Неизвестный
24.09.2008, 17:34
общий
ну лично я бы все таки сделал ссылку на альбом в песнях, даже если у вас нету альбомов а песни есть это поле просто может быть пустым, но если есть альбомы то логичнее было бы показывать пользователю, что вот эти песни относятся к такому альбому..
по поводу жанра согласен с вами лучше сделать тип integer и хранить просто список жанров в отдельной таблице, а в этой хранить только ссылку в виде id
Неизвестный
24.09.2008, 18:12
общий
по поводу жанра согласен с вами лучше сделать тип integer и хранить просто список жанров в отдельной таблице, а в этой хранить только ссылку в виде id

Вот тут то и я не знаю какой запрос делать.
Допустим нужно выбрать всех исполнителей жанра "Ретро"
КАКОГО вида должен быть в этом случае запрос?
Неизвестный
24.09.2008, 18:19
общий
а чего тут сложного то

Код:
 

select * from zhanr z
left join songs s on s.type=z.id
where z.type='Ретро'

Неизвестный
24.09.2008, 18:21
общий
вам нужно почитать справку по sql в частности про LEFT JOIN,JOIN,RIGHT JOIN
Форма ответа