powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Создал базу данных для освоения SQL
25 сообщений из 103, страница 2 из 5
Создал базу данных для освоения SQL
    #38740143
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterGeronemo,

Таблицы "авторы" и "читатели" - суть одно и тоже. Можно совместить данные в одной таблице, добавив флаг ISREADER или ISAUTHOR. Заодно решишь вопрос - "может ли читатель быть писателем и наоборот" и избежишь дублирования данных.

кроме этого, авторов у книги может быть много, а тут только одна.

по читателям и писателям - атрибуты у них очевидно разные будут, по авторам в сторону автобиографии, по читателям в сторону идентификации личности и установления места жительства и способов оплаты штрафов. Там паспорт и т. п. .
Паспорт - еще одна долгая история, паспортов там дофига всяких...

У авторов кстати имен много, псевдонимы...
так что если и сводить в одно читателей и писателей, то надо использовать наследование и сильно думать...


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

можно и нужно также охватить хранение книг, где, шкаф, пленка, место и так далее. тоже отдельная долгая история.
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740147
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257,

Потому что это РАЗНЫЕ сущности - писатели пишут книги, а читатели пользуются библиотекой. Общего у них только принадлежность к людям.


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

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

Так что я уже против наследования авторовов и людей, надо наследовать авторов и псевдонимы.

а вообще, библиотека - достаточно сложная предметная область. можно делать частную библиотеку а не публичную, будет немного проще.
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740151
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geronemocreate table Book (id int(10) auto_increment, authorId int(10), bookName varchar(100), numberOfBooks int(10) default 1, primary key (id), foreign key (authorId) references Person(id));
не очень понимаю, почему в таблице книг находится id автора, ибо ходят слухи, что не все книги пишутся в одиночку, а некоторые вообще под редакцией неких лиц, которые авторами-то и не являются собственно.
Geronemocreate table TakenBooks (id int(10) auto_increment, bookId int(10), readerId int(10), foreign key (bookId) references Book (id), foreign key (readerId) references Person (id), primary key (id));
Дата взятия книги как уже обращали внимание, просто необходима, ибо при существующей схеме второй раз книжку читателю не взять на руки.

Ну и конечно, в схеме библиотеки должны присутствовать не только писатели и читатели. Я там ещё библиотекарей постоянно встречаю. Вечно снуют туда-сюда. И однако не лишним было бы знать кем выдана книга.
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740160
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю участникам дискуссии слегка притормозить - это УЧЕБНЫЙ проект, автор выбрал библиотеку как знакомую ему (внешне) сферу деятельности.
Поэтому, Geronemo, - модифицируй базу чтобы учитывать множество авторов у книги.
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740161
1001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMasterSERG1257.
Вот недостатки навскидку
1 увеличили вероятность ошибки (оптимизатор не заругается на левую таблицу)
2 убрали возможность дать разные права
3 блокировка таблицы (типа индексы перестоить) блокирует обе таблицы
4 полный скан будет читать лишние страницы


1) Давайте сначала доберемся до SQL запросов, ага? Тогда и будем учить оптимизатор.
2) О каких разных права вы говорите?
3) Стоп. Я из 2-х таблиц сделал одну. Где вторая? Или вы сами с собой спорите? И перестройка индекса - оно конечно да, операция ежечасная.
4) А поподробнее можно? При правильных запросах и индексах и полный скан?

P.S. А можно все-таки ответить на вопрос - вот есть два человека - Азимов и Брэдбери - оба они авторы - могут ли они читать произведения друг друга?

P.P.S. Интересно, как с таким подходом вы будете каталог библиотеки с иерархией жанров строить ;)
брадцы, вы об чём...)

ТС - на 'этой земле' делает первые шаги...

пусть поспотыкается
набъёт шишек..

и
это - правильно
и
полезно же
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740178
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1001, если внимательно прочитать сообщения, то в выделенной Вами цитате разговор далёк от библиотеки автора темы. Они там реальный случай с объединением кучи таблиц рассматривали. Так что обсуждение перестройки индексов там вполне уместно
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740198
1001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.Fontaine1001, если внимательно прочитать сообщения, то в выделенной Вами цитате разговор далёк от библиотеки автора темы. Они там реальный случай с объединением кучи таблиц рассматривали. Так что обсуждение перестройки индексов там вполне уместносогласен

но ТС-то клюет 'навсё'
мой посыл был именно в этом смысле
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740237
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Предлагаю участникам дискуссии слегка притормозить - это УЧЕБНЫЙ проект, автор выбрал библиотеку как знакомую ему (внешне) сферу деятельности.
Поэтому, Geronemo, - модифицируй базу чтобы учитывать множество авторов у книги.

Ну и что?
На учебных проектах и нужно учиться анализировать предметную область.
А именно этого автор топика и не сделал сходу.
Очевидная мысль о множестве авторов у книги ему в голову не пришла, хотя в IT книги большей частью написаны именно в соавторстве.
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740460
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivНу и что?
На учебных проектах и нужно учиться анализировать предметную область.
А именно этого автор топика и не сделал сходу.
Очевидная мысль о множестве авторов у книги ему в голову не пришла, хотя в IT книги большей частью написаны именно в соавторстве.

Я тут недавно в рамках процесса повторения/вспоминания синтаксиса java делал небольшой проект. Начал с того, что консольное приложение посылает данные Сервлету, тот должен запуститься и вернуть какой-то ответ. Далее я стал записывать запросы в файл. Потом у меня появились запросы разных типов, для которых нужен свой обработчик. Потом я стал сохранять данные в БД. Потом я перестроил БД так, чтобы разбить запросы от клиентов на 3 стадии - запрос получен и сохранен, запрос (т. е. пакет запросов данного типа) передан на обработку, запрос обработан и отправлен в архив. Для этого пришлось вводить несколько потоков, а также решать вопрос целостности данных. Ну и потом я переделал проект под maven и JPA.
И это при том, что с java я когда-то работал достаточно много. 1-я половина ТЗ была мне дана знакомым, а потом я уже сам развернулся.

Здесь же с SQL я знаком на уровне select ... from .... where, create, update ... where.
Т. ч. я решил начать с малого, чтобы просто хоть как-то работало. В процессе я все равно все переделаю и надобавляю кучу разных вариантов. Сейчас у меня голова от них пухнет. Может быть несколько авторов, могут быть однофамильцы, книги могут быть не возвращены, причем вероятно есть какие-то злостные должники и т. д. Также возможны разные библиотекари, как внимательные и ответственные, так и нет.

На данный момент БД, я немного подумав, решил обратно разделить писателей и читателей. В конце концов, если писатель придет в библиотеку что-нибудь взять, мы можем записать его как читателя. Ведь в жизни так и происходит. Я написал книгу, она лежит в библиотеке. Я прихожу туда и мне говорят, вы тут в первый раз ? Я говорю Да и на меня заводят карточку или запись в БД, если библиотека современная. Никто же меня не спрашивает, а не автор ли я какой-либо книги, давайте вашу карточку пометим особым цветом, а я ведь могу еще и соврать или писать под псевдонимом.
В общем пусть будут пока и Читатели и Писатели. Более того, я подумываю у писателей объединить firstName и lastName в fullname.
Иначе как мне именовать Эрик Мария Ремарка и Френсис Скотт Фитцжеральда. Это реально проблема, с которой я уже столкнулся.
Хотя можно оставить firstName и lastName, а fullname по дефолту firstName + lastName и при созданиии Писателя пользоваться не insert into, а процедурой addWriter (firstName, lastName, fullName (maybe null));
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740496
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GeronemoВ общем пусть будут пока и Читатели и Писатели. Более того, я подумываю у писателей объединить firstName и lastName в fullname.
Иначе как мне именовать Эрик Мария Ремарка и Френсис Скотт Фитцжеральда. Это реально проблема, с которой я уже столкнулся.
Хотя можно оставить firstName и lastName, а fullname по дефолту firstName + lastName и при созданиии Писателя пользоваться не insert into, а процедурой addWriter (firstName, lastName, fullName (maybe null));

Что-то типа того

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create procedure newWriter (in firstName varchar(20),  lastName varchar(20), fullName varchar(60), out id int(10))
begin
	Declare fName varchar(60);

	if (fullName = null)
	then
		Set fName = firstName + ' ' + lastName;
		insert into Writer (firstName, lastName, fullName) values (firstName, lastName, flName);
	else
		insert into Writer (firstName, lastName, fullName) values (firstName, lastName, fullName);
	end if;

	Set id = LAST_INSERT_ID(); 
end$$
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740515
Триггерман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257DarkMaster А зачем плодить сущности изначально? Потому что это РАЗНЫЕ сущности - писатели пишут книги, а читатели пользуются библиотекой. Общего у них только принадлежность к людям. Да-а-а-а ... я чувствую вы научите новичка разрабатывать БД ...
А сущность "сотрудник библиотеки" вы в ещё одной таблице будете хранить ?
Вы так договоритесь до того, что книги с зелёной обложкой вы будете хранить в одной таблице, а книги с синей обложкой - в другой.
Не, ну а чо, обложки-то разного цвета...
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740607
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geronemo,

Постараюсь обьяснить свою идею общей таблицы для писателей/читателей и прочего:
- все они имеют общие аттрибуты (ФИО, пол и т.п), использование которых диктуется только необходимостью (ну пусть будет таблица PEOPLE)
- все могут выступать в минимум 2-х ипостасях - и как писатель и как читатель
- книга имеет ссылку минимум на одного автора, или на нескольких авторов (соотношение один ко многим)
- журнал приема-выдачи - хранит ссылку на читателя и книгу (соотношение один к одному)
- псевдонимы, коллективные псевдонимы - это дополнительная таблица, которая содержит связку один ко многим (псевдоним - ссылки на авторов)
- ссылка на автора, ссылка на читателя - есть ID из PEOPLE.

Как минимум такой подход позволяет манипулировать только одной сущностью. Например изначально была запись "Э. Ремарк". Мы только в одном месте изменим ее на "Эрих Мария Ремарк" и у нас во всех результатах запросов появится именно Эрих Мария Ремарк. Вне зависимости от того, писатель это, читатель, член авторского коллектива или рецензент. И нам не нужно тараканить по базе, меняя эту инфу в разных таблицах.
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740692
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster, может тогда сделать так ?

1. Таблица People, в ней как можно больше данных о человеке, кто, откуда, пол и т. д. и т. п.
2. Таблица Readers, здесь id, id из people, возможно еще какие-то поля, типа читательского рейтинга (добросовестный или говнюк)
3. Таблица Writer, тоже id, id из People, Псевдоним, может что-то еще.

Т. е. получается, если по аналогии с ООП, то
class People
class Readers extends People
class Writer extends People
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740729
1001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GeronemoMasterZivНу и что?
На учебных проектах и нужно учиться анализировать предметную область.
А именно этого автор топика и не сделал сходу.
Очевидная мысль о множестве авторов у книги ему в голову не пришла, хотя в IT книги большей частью написаны именно в соавторстве.

Я тут недавно в рамках процесса повторения/вспоминания синтаксиса java делал небольшой проект. Начал с того, что консольное приложение посылает данные Сервлету, тот должен запуститься и вернуть какой-то ответ. Далее я стал записывать запросы в файл. Потом у меня появились запросы разных типов, для которых нужен свой обработчик. Потом я стал сохранять данные в БД. Потом я перестроил БД так, чтобы разбить запросы от клиентов на 3 стадии - запрос получен и сохранен, запрос (т. е. пакет запросов данного типа) передан на обработку, запрос обработан и отправлен в архив. Для этого пришлось вводить несколько потоков, а также решать вопрос целостности данных. Ну и потом я переделал проект под maven и JPA.
И это при том, что с java я когда-то работал достаточно много. 1-я половина ТЗ была мне дана знакомым, а потом я уже сам развернулся.

Здесь же с SQL я знаком на уровне select ... from .... where, create, update ... where.
Т. ч. я решил начать с малого, чтобы просто хоть как-то работало. В процессе я все равно все переделаю и надобавляю кучу разных вариантов. Сейчас у меня голова от них пухнет. Может быть несколько авторов, могут быть однофамильцы, книги могут быть не возвращены, причем вероятно есть какие-то злостные должники и т. д. Также возможны разные библиотекари, как внимательные и ответственные, так и нет.

На данный момент БД, я немного подумав, решил обратно разделить писателей и читателей. В конце концов, если писатель придет в библиотеку что-нибудь взять, мы можем записать его как читателя. Ведь в жизни так и происходит. Я написал книгу, она лежит в библиотеке. Я прихожу туда и мне говорят, вы тут в первый раз ? Я говорю Да и на меня заводят карточку или запись в БД, если библиотека современная. Никто же меня не спрашивает, а не автор ли я какой-либо книги, давайте вашу карточку пометим особым цветом, а я ведь могу еще и соврать или писать под псевдонимом.
В общем пусть будут пока и Читатели и Писатели. Более того, я подумываю у писателей объединить firstName и lastName в fullname.
Иначе как мне именовать Эрик Мария Ремарка и Френсис Скотт Фитцжеральда. Это реально проблема, с которой я уже столкнулся.
Хотя можно оставить firstName и lastName, а fullname по дефолту firstName + lastName и при созданиии Писателя пользоваться не insert into, а процедурой addWriter (firstName, lastName, fullName (maybe null));просто многабукаф бз очков - не осилю..


ну
еще красиваяБбиблиотекарша может ббыть
и читателем и писателем
и библиотекарш0й



(Ц)...На учебных проектах и нужно учиться анализировать предметную область..





ТС - шахматист..)
типа - затеял п0ртейку
кот-я точно доведет его до - ченибудь реального
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740744
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeronemoDarkMaster, может тогда сделать так ?

1. Таблица People, в ней как можно больше данных о человеке, кто, откуда, пол и т. д. и т. п.
2. Таблица Readers, здесь id, id из people, возможно еще какие-то поля, типа читательского рейтинга (добросовестный или говнюк)
3. Таблица Writer, тоже id, id из People, Псевдоним, может что-то еще.

Т. е. получается, если по аналогии с ООП, то
class People
class Readers extends People
class Writer extends People+1
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740771
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geronemo,

Ну примерно так. Т.е. есть основная инфа (таблица PEOPLE) - которая заполняется всегда, есть дополнительная инфа (доп. атрибуты), которая хранится где-то рядышком (в другой таблице) и заполняется только при необходимости. Т.о. получим, что биография Васи Пупкина нам особо не нужна, бо он не писатель, а те же данные по биографии Ремарка - могут быть интересны.

Т.е. по факту мы имеем 2-х людей - Ремарка и Пупкина в таблице PEOPLE. Которые могут фигурировать как авторы в таблице BOOK2AUTHOR (книга <-> автор(ы) и которые могут фигурировать в таблице JOURNAL (book <-> reader). В дополнение мы можем завести себе AUTHOR_BIO (автор-биография), READER_BAD (штрафники) и еще кучу всякого, но по сути всегда будем знать, что любая ссылка на человека - она в таблице PEOPLE.
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740862
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> я немного подумав, решил обратно разделить писателей и читателей

Плохо подумали.

> я подумываю у писателей объединить firstName и lastName в fullname

Ещё раз плохо подумали.

> Френсис Скотт Фитцжеральд

Francis Scott Key Fitzgerald. Упс, да?

Видите ли, в чём проблема: если вы хотите научиться проектировать, вам нужно выбрать другой путь. Если освежить dml, - можно делать то, что вы делаете.
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740864
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получается что-то типа того, норм ?

Код: sql
1.
2.
3.
4.
5.
create table Person (id int(10) auto_increment, firstName varchar(20),  lastName varchar(20), primary key (id));

create table Writer (id int(10) auto_increment,  personId int(10), fullName varchar(60), info varchar (1000), foreign key (personId) references Person (id), primary key (id));

create table Reader (id int(10) auto_increment, personId int(10), isMale boolean, phone varchar (20), foreign key (personId) references Person (id), primary key (id));
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740934
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну полагаю можно подвести некоторые итоги для Geronemo

Любая база суть модель реальной действительности. Модель может быть адекватной и не очень (одна моделька машины имеет только колеса и ездит, другая моделька имеет колеса, открывающиеся дверцы, но не ездит). В том и планида проектировщика, чтобы выбрать нужную модель, причем такую которая переживет смену мнений заказчика. Если проектировщик выбрал верно, то этого никто не заметит, а вот если ошибся, то пеняют все (как можно заблудится в трех соснах, это же очевидно). Это задача проектировщика (точнее менеджера проекта) решать когда сказать - хватит углублятся, давайте уже сделаем пилотный проект

Одного правильного ответа (типа 2*2=4) не существует. Для того же наследования я знаю три разных реализации (с одной таблицей, двумя или тремя) , каждая со своими достоинствами и недостатками. И это задача проектировщика выбрать одну реализацию, котораю будет использовать достоинства и нивелировать недостатки и ответить за свой выбор (см выше).

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

Для ощущения полного цимеса, лучше проводить изменения на живой базе с данными (а лучше с большим количеством данных и жестким временем простоя). Только тогда разработчик поймет прелесть ограничений (constraint) базы (которые вернут ошибку сразу, а не неправильные данные потом)
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38740949
1001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257Ну полагаю можно подвести некоторые итоги для Geronemo

Любая база суть модель реальной действительности. Модель может быть адекватной и не очень (одна моделька машины имеет только колеса и ездит, другая моделька имеет колеса, открывающиеся дверцы, но не ездит). В том и планида проектировщика, чтобы выбрать нужную модель, причем такую которая переживет смену мнений заказчика. Если проектировщик выбрал верно, то этого никто не заметит, а вот если ошибся, то пеняют все (как можно заблудится в трех соснах, это же очевидно). Это задача проектировщика (точнее менеджера проекта) решать когда сказать - хватит углублятся, давайте уже сделаем пилотный проект

Одного правильного ответа (типа 2*2=4) не существует. Для того же наследования я знаю три разных реализации (с одной таблицей, двумя или тремя) , каждая со своими достоинствами и недостатками. И это задача проектировщика выбрать одну реализацию, котораю будет использовать достоинства и нивелировать недостатки и ответить за свой выбор (см выше).

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

Для ощущения полного цимеса, лучше проводить изменения на живой базе с данными (а лучше с большим количеством данных и жестким временем простоя). Только тогда разработчик поймет прелесть ограничений (constraint) базы (которые вернут ошибку сразу, а не неправильные данные потом)
стройные нозьки
острый Ум..


и, главное,
душа
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38741049
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 08.09.2014 14:18, Geronemo wrote:

> В общем пусть будут пока и Читатели и Писатели. Более того, я подумываю
> у писателей объединить firstName и lastName в fullname.
> Иначе как мне именовать Эрик Мария Ремарка и Френсис Скотт Фитцжеральда.
> Это реально проблема, с которой я уже столкнулся.


А это -- две несвязанные проблемы. Объединять ли читателей и писателей,
или нет, и -- именования. Такие имена могут быть и у читателей.

На самом деле вообще имя в виде "Фамилия, имя, отчество" -- это
специфика стран бывшего СССР.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38741052
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Да-а-а-а ... я чувствую вы научите новичка разрабатывать БД ...
> А сущность "сотрудник библиотеки" вы в ещё одной таблице будете хранить ?

Ты абсолютно прав.
Но в контексте данной темы я бы НЕ настаивал на использовании
наследования и хранении в одной таблице. Я уже написал, почему.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38741059
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 08.09.2014 15:51, DarkMaster wrote:

> - все они имеют общие аттрибуты (ФИО, пол и т.п), использование которых
> диктуется только необходимостью (ну пусть будет таблица PEOPLE)
> - все могут выступать в минимум 2-х ипостасях - и как писатель и как
> читатель


ЕЩЁ РАЗ!!
Писатель может быть не обязательно человеком. Может быть человек, может
быть человек под псевдонимом, может быть коллектив, где каждый может
быть под своим именем, или под псевдонимом, либо может быть коллектив,
где все выступают под одним псевдонимом. Причём псевдонимом может
выступать как имя, так и прозвище, или вообще абстрактная подпись.
"Огненный лев", "пламенные борцы за победу революции", "Коллектив
трудящихся завода Полиграфмаш" и т.п.


> - книга имеет ссылку минимум на одного автора, или на нескольких авторов
> (соотношение один ко многим)


Книга должна ссылаться на автора через его имя или псевдоним.
При этом реального автора может вообще не быть, не быть человека,
стоящего за этим псевдонимом.

Кстати, есть ещё и произведения с неизвестным автором, и приписываемые
какому-то автору.

> - журнал приема-выдачи - хранит ссылку на читателя и книгу (соотношение
> один к одному)

Читатели могут обычно брать по несколько книг.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38741061
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 08.09.2014 17:03, ChA wrote:

> Т. е. получается, если по аналогии с ООП, то
> class People
> class Readers extends People
> class Writer extends People
>
> +1

Да -100 !

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создал базу данных для освоения SQL
    #38741090
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Любая база суть модель реальной действительности.

Поправлю: модель представлений о действительности. На самом деле это важное уточнение, которое делает контекст составной частью модели. Менеджер проекта вряд ли имеет об этом представление, так что роль архитектора баз данных несколько шире, чем принято считать.

> Одного правильного ответа (типа 2*2=4) не существует.

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

> крайне важна фигура заказчика

Никакой роли фигура заказчика не играет; как правило, заказчик - обычный тупой баран. Важно исключительно техническое задание.

Как-то так.
...
Рейтинг: 0 / 0
25 сообщений из 103, страница 2 из 5
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Создал базу данных для освоения SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]