Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прошу помочь с правильным созданием таблиц [D6, Paradox]


Страницы:   1 2

vich ©   (2003-01-09 16:16:00) 

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

на одном CD 12 песен и три из них имеют одного исполнителя, если я внесу его имя три раза то база увиличивается на две ненужные записи, что не желательно.

вопрос: как мне связать три таблицы (CD + Название песни + Имя исполнителя)?
Приму все советы и ссылки.


Max Zyuzin   (2003-01-10 17:18:00) [1]

>MsGuns © (10.01.03 16:57)
Согласен... :)


MsGuns   (2003-01-10 16:57:00) [2]

>Max Zyuzin © (10.01.03 15:23)

Когда вопрос поставлен ясно и однозначно, как правило, разногласий не бывает.


Max Zyuzin   (2003-01-10 15:23:00) [3]

>MsGuns © (10.01.03 14:05)
Миру мир :)))

>vich © (10.01.03 14:58)
Спрашивай :) чем смогем - помогем :)


MsGuns   (2003-01-10 15:01:00) [4]

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 - родитель)


vich   (2003-01-10 14:58:00) [5]

to atmamont,Max Zyuzin спасибо за линки, сижу разбираюсь но думаю у меня еще появятся вопросы на эту тему.


atmamont   (2003-01-10 14:46:00) [6]

когда ты поймешь, что означает термин НОРМАЛЬНАЯ ФОРМА, тогда все вопросы сами отпадут. Линки тебе давали


vich   (2003-01-10 14:12:00) [7]

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 известна?


MsGuns   (2003-01-10 14:05:00) [8]

>Max Zyuzin © (10.01.03 13:43)

Да я вообще-то и не думал наезжать.. Просто бывает ситуация, когда надо указать "родное" место объекта (песни в данном случае) и это совсем не значит, что по самой ранней дате. А впрочем, это не существенно, т.к. автору сабжа, похоже, не до таких тонкостей :)


Max Zyuzin   (2003-01-10 13:43:00) [9]

>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 13:28:00) [10]

>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" (а для меломана это весьма важно, уверяю), а не в сборниках ?


Alexander_K   (2003-01-10 13:26:00) [11]

Да возьми, например Мартина Грабера, впринципе оттуда можно кое-что почерпнуть.


vich   (2003-01-10 13:17:00) [12]

to Max Zyuzin
: - "А вообще лучше сначала почитать теорию реляционных баз данных, и научится нормализовать свои таблицы... тогда все встанет на свои места..."

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


Max Zyuzin   (2003-01-10 12:11:00) [13]

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

>MsGuns © (10.01.03 11:46)
Енто почему???
в 4 таблице замечательно умещаются понятие сборника...


MsGuns   (2003-01-10 11:46:00) [14]

>ЮЮ © (10.01.03 03:39)

Все врено, кроме одного. Путаем, батенька, понятие "диски" и "альбомы", а это совсем не одно и то же. К примеру, может выйти CD с "венегретом" :
- Песня Аслсу (из альбома 2001г)
- Песня Валерии (альбом 1998г)
- Песня "Ручки в бочки" (альбом 2000г)
....
Твоя модель не позволяет "держать" инфу об оригинальной дискографии 8)


ЮЮ   (2003-01-10 03:39:00) [15]

1 таблица: SINGERS (ИСПОЛНИТЕЛИ)
ID - поле идентификатор исполнителя
NAME - поле названия исполнителя
.....

2 таблица: SONGS (ПЕСНИ)
(не бывают без исолнителя, исполненные разными исполнителями являются разными объектами)

ID - поле идентификатор
SINGER - ссылка на идентификатор исполнителя
SONG - название песни
...

3 таблица: CDS (ДИСКИ)
ID - идентификатор CD
NAME - название
....

4 таблица: CDCONTENTS (СОДЕРЖИМОЕ ДИСКА)
СD - идентификатор CD
SONG - название


Val   (2003-01-09 18:58:00) [16]

согласен с MsGuns © (09.01.03 18:27)
нужен еще справочник песен(то же описание можно запихнуть, т.д.), из 2-й таблицы убрать song и заменить на идентификатор, с внешним ключем на таблицу песен.


MsGuns   (2003-01-09 18:54:00) [17]

Кстати, когда-то писал подобную вещь (типа энциклопедии, только для изо). Советую прежде всего определиться с объектами. Например (для твоего случая):

Объект 1. Аудиотрек (песня, композиция и т.д.)
------------------------------------------------
Исполнитель (группа) ---ссылка-----
Название на "родном" языке
Название на англ языке
Название на русском языке
Альбом (сингл) ---ссылка-----
Текст (на русском, англ) ---указатель на текстовый файл---
Пост (если есть)
Время звучания
Тех.характеристики (формат, частота и др)
Стиль (рок, поп, джаз и т.д.)
Трек --- ссылка на mp3 или что там---

Объект 2 (Альбом)
-------------------
Название альбома
Исполнитель ---ссылка----
Год записи
Место записи
Признак оригинальности (программный, сборка, неизданные ранее)
Состав песен (копозиций) (много к одному) ---ссылки---
Записывающая фирма
Обложка --указатель на картинку----
Состав музыкантов (много к одному) --ссылки---
CD ---ссылка на каталог или диск----

Объект 3 (Исполнитель)
-----------------------
Имя
Дата рождения
Место рождения
Настоящее имя
Кредо (инструмент, тембр голоса и т.д.)


Ну и так далее, смысл понятен, я думаю ?
Для каждого объекта создай таблицу. Для каждой записи каждой таблицы свой ID. Вместо ссылок - ID соотв.объектов

В проге создай несколько условных интерфейсов, каждый из которых группирует инфу по какому-нибудь из объектов: исполнителя, альбомы, песни и пр. Например, состав CD показывает все диски в алф. или другом порядке и по каждому состав песен, причем для текущей отображается текст, пост, хар-ки, весь набор названий и т.д.) Вся подкачка в контролы (гриды, деревья или что другое) запросами.
Такая БД будет самодостаточна, и, самое главное, удобна в использовании.


MsGuns   (2003-01-09 18:27:00) [18]

Таблице 2 не хватает сущей мелочи - идентификатора собственно песни (любой) как инф.единицы (сущности). SONG не годится хотя бы по двум причинам:

- Песни могут иметь одинаковое название
- Использовать в качестве ключа (любого, а особенно уникального) длинные стринги - прямая дорога к геморрою.


vich   (2003-01-09 17:10:00) [19]

2 Alexander_K спасибо попробую разобраться


Alexander_K   (2003-01-09 17:03:00) [20]

Да кстати, таблица 1 и таблица 3 у тебя получается как справочники, то есть поля ID и CD должны быть уникальными(первичные ключи).


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо