Текущий архив: 2003.01.30;
Скачать: CL | DM;
ВнизПрошу помочь с правильным созданием таблиц Найти похожие ветки
← →
vich (2003-01-09 16:16) [0]Прошу помочь с правильным созданием таблиц на Paradox-е. Создавать таблицы я научился, а вот как мне поступить есть повторяющиеся записи, например:
на одном CD 12 песен и три из них имеют одного исполнителя, если я внесу его имя три раза то база увиличивается на две ненужные записи, что не желательно.
вопрос: как мне связать три таблицы (CD + Название песни + Имя исполнителя)?
Приму все советы и ссылки.
← →
vich (2003-01-09 16:48) [1]Или как правильно делать запросы для таблиц Paradox
← →
Alexander_K (2003-01-09 17:00) [2]Можно поступить так (если я правильно понял):
создать 3 таблицы.
1 таблица:
ID - поле идентификатор исполнителя
NAME - поле названия исполнителя
.....
2 таблица:
ID - ссылка на идентификатор исполнителя
CD - ссылка на идентификатор CD
SONG - название песни
3 таблица:
CD - идентификатор CD-ROMа
NAME - название
....
А используешь это примерно так:
select a.name, b.name,c.song from t1 a, t3 b, t2 c where c.id = a.id and c.cd = b.cd and b.name like "имя исполнителя"
Что то вроде того.......
← →
Alexander_K (2003-01-09 17:03) [3]Да кстати, таблица 1 и таблица 3 у тебя получается как справочники, то есть поля ID и CD должны быть уникальными(первичные ключи).
← →
vich (2003-01-09 17:10) [4]2 Alexander_K спасибо попробую разобраться
← →
MsGuns (2003-01-09 18:27) [5]Таблице 2 не хватает сущей мелочи - идентификатора собственно песни (любой) как инф.единицы (сущности). SONG не годится хотя бы по двум причинам:
- Песни могут иметь одинаковое название
- Использовать в качестве ключа (любого, а особенно уникального) длинные стринги - прямая дорога к геморрою.
← →
MsGuns (2003-01-09 18:54) [6]Кстати, когда-то писал подобную вещь (типа энциклопедии, только для изо). Советую прежде всего определиться с объектами. Например (для твоего случая):
Объект 1. Аудиотрек (песня, композиция и т.д.)
------------------------------------------------
Исполнитель (группа) ---ссылка-----
Название на "родном" языке
Название на англ языке
Название на русском языке
Альбом (сингл) ---ссылка-----
Текст (на русском, англ) ---указатель на текстовый файл---
Пост (если есть)
Время звучания
Тех.характеристики (формат, частота и др)
Стиль (рок, поп, джаз и т.д.)
Трек --- ссылка на mp3 или что там---
Объект 2 (Альбом)
-------------------
Название альбома
Исполнитель ---ссылка----
Год записи
Место записи
Признак оригинальности (программный, сборка, неизданные ранее)
Состав песен (копозиций) (много к одному) ---ссылки---
Записывающая фирма
Обложка --указатель на картинку----
Состав музыкантов (много к одному) --ссылки---
CD ---ссылка на каталог или диск----
Объект 3 (Исполнитель)
-----------------------
Имя
Дата рождения
Место рождения
Настоящее имя
Кредо (инструмент, тембр голоса и т.д.)
Ну и так далее, смысл понятен, я думаю ?
Для каждого объекта создай таблицу. Для каждой записи каждой таблицы свой ID. Вместо ссылок - ID соотв.объектов
В проге создай несколько условных интерфейсов, каждый из которых группирует инфу по какому-нибудь из объектов: исполнителя, альбомы, песни и пр. Например, состав CD показывает все диски в алф. или другом порядке и по каждому состав песен, причем для текущей отображается текст, пост, хар-ки, весь набор названий и т.д.) Вся подкачка в контролы (гриды, деревья или что другое) запросами.
Такая БД будет самодостаточна, и, самое главное, удобна в использовании.
← →
Val (2003-01-09 18:58) [7]согласен с MsGuns © (09.01.03 18:27)
нужен еще справочник песен(то же описание можно запихнуть, т.д.), из 2-й таблицы убрать song и заменить на идентификатор, с внешним ключем на таблицу песен.
← →
ЮЮ (2003-01-10 03:39) [8]1 таблица: SINGERS (ИСПОЛНИТЕЛИ)
ID - поле идентификатор исполнителя
NAME - поле названия исполнителя
.....
2 таблица: SONGS (ПЕСНИ)
(не бывают без исолнителя, исполненные разными исполнителями являются разными объектами)
ID - поле идентификатор
SINGER - ссылка на идентификатор исполнителя
SONG - название песни
...
3 таблица: CDS (ДИСКИ)
ID - идентификатор CD
NAME - название
....
4 таблица: CDCONTENTS (СОДЕРЖИМОЕ ДИСКА)
СD - идентификатор CD
SONG - название
← →
MsGuns (2003-01-10 11:46) [9]>ЮЮ © (10.01.03 03:39)
Все врено, кроме одного. Путаем, батенька, понятие "диски" и "альбомы", а это совсем не одно и то же. К примеру, может выйти CD с "венегретом" :
- Песня Аслсу (из альбома 2001г)
- Песня Валерии (альбом 1998г)
- Песня "Ручки в бочки" (альбом 2000г)
....
Твоя модель не позволяет "держать" инфу об оригинальной дискографии 8)
← →
Max Zyuzin (2003-01-10 12:11) [10]А вообще лучше сначала почитать теорию реляционных баз данных, и научится нормализовать свои таблицы... тогда все встанет на свои места...
>MsGuns © (10.01.03 11:46)
Енто почему???
в 4 таблице замечательно умещаются понятие сборника...
← →
vich (2003-01-10 13:17) [11]to Max Zyuzin
: - "А вообще лучше сначала почитать теорию реляционных баз данных, и научится нормализовать свои таблицы... тогда все встанет на свои места..."
А не подскажите где взять в интернете иформацию, а то мне действительно трудно разобраться.
← →
Alexander_K (2003-01-10 13:26) [12]Да возьми, например Мартина Грабера, впринципе оттуда можно кое-что почерпнуть.
← →
MsGuns (2003-01-10 13:28) [13]>Max Zyuzin © (10.01.03 12:11)
>MsGuns © (10.01.03 11:46)
>Енто почему???
>в 4 таблице замечательно умещаются понятие сборника...
Да ну ?
Тогда, уважаемый, как рассовать по таблицам такую ситуевину:
Есть альбом PF "The Dark Side Of The Moon", а в нем вещь "Money"
Кроме того, есть еще 2 диска (CD): "The Best Of Art-Rock" и "The Best Of Pink Floid", где эта композиция присутствует в оригинальном звучании.
Внимание, вопрос !
Как мне, используя приведенную ЮЮ © (10.01.03 03:39) топологию
БД, указать, что вещь "Money" была впервые записана именно в "The Dark Side Of The Moon" (а для меломана это весьма важно, уверяю), а не в сборниках ?
← →
Max Zyuzin (2003-01-10 13:43) [14]>vich © (10.01.03 13:17)
http://www.citforum.ru/database/osbd/contents.shtml
http://www.citforum.ru/database/
Поищи на этом сайте... (www.citforum.ru) там есть много полезного.... А вообще лучше взять книжку... Сходи в библиотеку, все книги по теории были написаны давным давно...
>MsGuns © (10.01.03 13:28)
Предлагаю без взаимонаездов :)
В 3-ю таблицу (CDS (ДИСКИ)) добавляется поле год выпуска и в атаку... (все остальные сборники будут одназначно позже по дате)
Запросом выбираешь самый старый и усе.
Придумвать SQL запрос?
← →
MsGuns (2003-01-10 14:05) [15]>Max Zyuzin © (10.01.03 13:43)
Да я вообще-то и не думал наезжать.. Просто бывает ситуация, когда надо указать "родное" место объекта (песни в данном случае) и это совсем не значит, что по самой ранней дате. А впрочем, это не существенно, т.к. автору сабжа, похоже, не до таких тонкостей :)
← →
vich (2003-01-10 14:12) [16]to All
Дорогие Мастера моя задача состоит в том, что бы написать программу(базу), в которой содержалась бы следующая информация:
1 # CD,
2 # Песни на CD ,
3 Исполнитель,
4 Название композиции,
5 Год исполнения,
6 Стиль.
В принципе клиент получил то, что хотел (программа и база готовы), но есть одно НО, клиент конвертирует *.мр3 в простой формат Audio CD и имеет коллекцию музыки больше 1000 CD"s. Так как таблица одна, что в принципе не правильно изначально, потом это выльется в будущем к переполнению базы повторяющимися записями поэтому я хочу исправить свою ошибку и сделать так: сделан диалог..... Клиент хочет занести в базу только что сделанный CD и при нажатии кнопки "Создать" получает: # CD присваивается автоматом, по выбранному из списка колличеству песен получает поля для внесения информации и дополнительные поля №№ 3-6, где заполняет только поля №№ 3,4, а в остальные выбирает из списка, нажимает "Готово" и инфа в базе.
Вопрос: как сделать правильно таблицы если информация для полей №№ 1,2-5,6 известна?
← →
atmamont (2003-01-10 14:46) [17]когда ты поймешь, что означает термин НОРМАЛЬНАЯ ФОРМА, тогда все вопросы сами отпадут. Линки тебе давали
← →
vich (2003-01-10 14:58) [18]to atmamont,Max Zyuzin спасибо за линки, сижу разбираюсь но думаю у меня еще появятся вопросы на эту тему.
← →
MsGuns (2003-01-10 15:01) [19]1. Таблица CD:
CDID AutoInc (Уник.идентификатор)
CDName VarChar (Наименование диска)
CDDuration I (время проигрывания в сек)
CDSongs I (кол-во песен)
CDCreatedDt D (Дата и создания диска)
CDSubst BLOB (прочая информация, включая обложки)
2. Таблица SINGERS
SNID AutoInc (Уник.идентификатор)
SNName VarChar (Имя исполнителя)
SNImage BLOB (картинки-фотки)
SNSubst M (год.рождения, страна и т.п.)
3. Таблица LISTMP3:
MPID AutoInc (Уник.идентификатор)
SNID I (Ссылка на исполнителя)
MPStyle VARCHAR (Стиль)
MPName VarChar (Название песни)
MPName VARCHAR Полный путь и имя MP3
MPDuration I (время проигрывания в сек)
MPLirics M (Текст песни)
4. Таблица содержимого CD
CDID I (ссылка на CD)
MPID I (ссылка на MP3 - родитель)
← →
Max Zyuzin (2003-01-10 15:23) [20]>MsGuns © (10.01.03 14:05)
Миру мир :)))
>vich © (10.01.03 14:58)
Спрашивай :) чем смогем - помогем :)
← →
MsGuns (2003-01-10 16:57) [21]>Max Zyuzin © (10.01.03 15:23)
Когда вопрос поставлен ясно и однозначно, как правило, разногласий не бывает.
← →
Max Zyuzin (2003-01-10 17:18) [22]>MsGuns © (10.01.03 16:57)
Согласен... :)
Страницы: 1 вся ветка
Текущий архив: 2003.01.30;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.008 c