|
|
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Всем привет. Потихоньку осваиваю SQL. Владею им на самом начальном уровне, хотелось бы довести хотя бы до начально-среднего. Читаю книги. И решил создать простенькую БД, в которую запихаю какое-то количество данных и буду экспериментировать с нею в процесс чтения той или иной книги. База данных описывает библиотеку, в которой присутствует M книг N авторов (M>=N). Также есть читатели и каждый из них может взять на чтение несколько книг. При этом я думаю на первое время сделать упрощение, что каждой книги очень много и несколько человек могут взять по экземпляру (иначе мне придется вводит поле, взята ли книга или хранится в библиотеке, или же поле, в котором хранится количество определенных книг в библиотеке, например Книга1 - 1 штука, Книга 2 - 3 штуки) БД выглядит вот так. Зацените плиз, все ли верно с т. з. грамотного проектирования БД. Еще вопрос по поводу моих упрощений, может не стоит их делать, а сразу сделать самый трудный вариант (т. е. в таблицу Book ввести поле 'количество')? create database Library; use Library; create Table Autors (id int(10) auto_increment, firstName varchar(10), lastName varchar(10), primary key (id)); create Table Book (id int(10) auto_increment, authorId int(10), bookName varchar(100), primary key (id), foreign key (authorId) references Autors(id)); create Table Readers (id int(10) auto_increment, firstName varchar(10), lastName varchar(10), primary key (id)); create table TakenBooks (id int(10) auto_increment, bookId int(10), readerId int(10), foreign key (bookId) references Book (id), foreign key (readerId) references readers (id), primary key (id)); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 15:38 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Geronemo, Таблицы "авторы" и "читатели" - суть одно и тоже. Можно совместить данные в одной таблице, добавив флаг ISREADER или ISAUTHOR. Заодно решишь вопрос - "может ли читатель быть писателем и наоборот" и избежишь дублирования данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 16:01 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
DarkMaster, Переделал. Все-таки добавил поле numberOfBooks, все-таки в настоящей библиотеке многие книги находятся не в единственном варианте create database Library; use Library; create table Person (id int(10) auto_increment, firstName varchar(10), lastName varchar(10), isAuthor boolean default false, primary key (id)); create 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)); create 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)); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 16:12 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
DarkMaster Можно совместить данные в одной таблице, добавив флаг ISREADER или ISAUTHORА нужно ли. Добавить путаницу на ровном месте и для чего? Наследование будет на следующем курсе (для продвинутых). Geronemo База данных описывает библиотеку, в которой присутствует M книг N авторов (M>=N). Также есть читатели и каждый из них может взять на чтение несколько книг.Условие задачи неполное. Добавьте список запросов и действий читателей. Таблица TakenBooks - как я понял это лог действий читателей - книга взята, книга возвращена. Добавте туда дату события. Тогда поле количество будет вычисляемым - то бишь определятся из этого лога. (получается такой примитивный Склад) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 16:52 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257DarkMaster Можно совместить данные в одной таблице, добавив флаг ISREADER или ISAUTHORА нужно ли. Добавить путаницу на ровном месте и для чего? Наследование будет на следующем курсе (для продвинутых). А зачем плодить сущности изначально? P.S. Был проект - перерабатывали логическую структуры одной БД. Из ~100 таблиц убралось около 20 именно из-за объединения сущностей. И это при том, что "универсальными справочниками" не баловались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 17:00 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257DarkMaster Можно совместить данные в одной таблице, добавив флаг ISREADER или ISAUTHORА нужно ли. Добавить путаницу на ровном месте и для чего? Наследование будет на следующем курсе (для продвинутых). Ладно, пусть будет 1 таблица, где будут и писатели и читатели. Все-таки логически каждый из них может быть и тем и тем. Ну и, чем сложнее БД, тем мне будет лучше, чтобы потренироваться на разного рода запросах. Условие задачи неполное. Добавьте список запросов и действий читателей. Тут я пока не знаю... Думаю будет очень много наиразнообразнейших запросов, даже самых извращенных, т. к. для меня это не реальная задача, а вымышленная с целью освоения SQL Таблица TakenBooks - как я понял это лог действий читателей - книга взята, книга возвращена. Добавте туда дату события. Тогда поле количество будет вычисляемым - то бишь определятся из этого лога. (получается такой примитивный Склад) Да, можно добавить поля 'Дата, когда книг взята' not null и 'Дата, когда книгу вернули' (null, если еще не вернули). Также мне похоже надо в таблицу Book добавить поле 'текущее количество книг в наличии'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 17:09 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
GeronemoВсем привет. Потихоньку осваиваю SQL. Владею им на самом начальном уровне, хотелось бы довести хотя бы до начально-среднего. Читаю книги. И решил создать простенькую БД, в которую запихаю какое-то количество данных и буду экспериментировать с нею в процесс чтения той или иной книги. База данных описывает библиотеку, в которой присутствует M книг N авторов (M>=N). Также есть читатели и каждый из них может взять на чтение несколько книг. При этом я думаю на первое время сделать упрощение, что каждой книги очень много и несколько человек могут взять по экземпляру (иначе мне придется вводит поле, взята ли книга или хранится в библиотеке, или же поле, в котором хранится количество определенных книг в библиотеке, например Книга1 - 1 штука, Книга 2 - 3 штуки) БД выглядит вот так. Зацените плиз, все ли верно с т. з. грамотного проектирования БД. Еще вопрос по поводу моих упрощений, может не стоит их делать, а сразу сделать самый трудный вариант (т. е. в таблицу Book ввести поле 'количество')? create database Library; use Library; create Table Autors (id int(10) auto_increment, firstName varchar(10), lastName varchar(10), primary key (id)); create Table Book (id int(10) auto_increment, authorId int(10), bookName varchar(100), primary key (id), foreign key (authorId) references Autors(id)); create Table Readers (id int(10) auto_increment, firstName varchar(10), lastName varchar(10), primary key (id)); create table TakenBooks (id int(10) auto_increment, bookId int(10), readerId int(10), foreign key (bookId) references Book (id), foreign key (readerId) references readers (id), primary key (id)); КАЖДАЯ книга (ея экземпляр) - имеет свой идентификатор типа - ИнвНомер (..на 17-й странице..) простенько мэйн тблка - Визит (когда- кто и тд... ) под неё дитэйл тблка (ПК-ФК) в которой - - экземпляр'ы'.. чо взял Читатель.... соответственно - разнообразные Статусы типа - Должник, Утеря.. и тп.. в тблке TakenBooks - не хватает Дат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 17:13 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Кстати, появился вопрос по синтаксису. Хочу содать таблицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 17:14 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
GeronemoКстати, появился вопрос по синтаксису. Хочу содать таблицу Book с полями id int(10) auto_increment authorId int(10) bookName varchar(100) - тут у меня вопрос, что если в названии книги будет 110 символов. numberOfBooks int(10) default 1 currentNumberOfBooks int(10) - тут вопрос, как сделать так, чтобы по дефолту значение было равно значению колонки numberOfBooks primary key (id), foreign key (authorId) references Person(id) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 17:16 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
DarkMaster А зачем плодить сущности изначально? Потому что это РАЗНЫЕ сущности - писатели пишут книги, а читатели пользуются библиотекой. Общего у них только принадлежность к людям. [offtopic] DarkMaster Из ~100 таблиц убралось около 20 именно из-за объединения сущностей. И это при том, что "универсальными справочниками" не баловались.У вас странные критерии оптимизации. Из двух таблиц сделали одну. Вот недостатки навскидку 1 увеличили вероятность ошибки (оптимизатор не заругается на левую таблицу) 2 убрали возможность дать разные права 3 блокировка таблицы (типа индексы перестоить) блокирует обе таблицы 4 полный скан будет читать лишние страницы А где выгода? Divide et impera - еще римляне говорили. [/offtopic] Geronemo Думаю будет очень много наиразнообразнейших запросовБаза это ответ на вопрос. Без условий задачи ответ смысла не имеет. Например 42 это правильный ответ? Поставьте задачу, пропишите все условия как если бы их рассказал заказчик. Потом исходя из условий проектируйте базу. Не запрягайте телегу впереди лошади. Geronemo с целью освоения SQLИщите упражнения по SQL. Там будут стандартные условия и ответ с которым можно будет сличить. Geronemo Также мне похоже надо в таблицу Book добавить поле 'текущее количество книг в наличии'. Это уже называется денормализация - нарушение принципа SPOT (по запросу лога взятий/возвратов количество будет одно, в поле другое - кому верить?) Денормализация будет на следующем курсе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 17:59 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Geronemo....Ладно, пусть будет 1 таблица, где будут и писатели и читатели.... ну, пришёл к Вам живой Классик и взял чо-нить 'из своего' а потом вернул... о засада..))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 18:07 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Скажите, пожалуйста, что не так в создании такой процедуры MySQL use Library; drop procedure if exists newPerson; create procedure newPerson ( firstName varchar(20), lastName varchar(20), isAuthor boolean) begin insert into Person (firstName, lastName, isAuthor) values (firstName, lastName, isAuthor); end Красненьким подсвечено, что ошибка там где isAuthor); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 18:17 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
1001 КАЖДАЯ книга (ея экземпляр) - имеет свой идентификатор типа - ИнвНомер (..на 17-й странице..)А вот это совершенно не факт. И как раз для таких моментов нужен заказчик. 2 Geronemo Давайте я вам помогу Итак имеем библиотеку - книги, авторы, читатели Действия (запросы) библиотекарь добавляет книгу (или экземпляры) в библиотеку читатель ищет книгу читатель берет книгу читатель возвращает книгу читатель смотрит наличие книги в библиотеке читатель смотрит кому выдавали экземпляры книги. библиотекарь списывает экземпляр книги. Geronemo Кстати, появился вопрос по синтаксису.Идите в форум для вашей СУБД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 18:20 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
[quot SERG1257]DarkMaster Geronemo Также мне похоже надо в таблицу Book добавить поле 'текущее количество книг в наличии'. Это уже называется денормализация - нарушение принципа SPOT (по запросу лога взятий/возвратов количество будет одно, в поле другое - кому верить?) Денормализация будет на следующем курсе. Ну на практике существует такое понятие, как книга потеряна/украдена. Допустим раз в год производится переучет и эти данные приводятся друг к другу. Думаю полю 'текущее количество книг в наличии' можно доверять больше, т. к. библиотекарь пошел и посмотрел, сколько их на полке по факту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 18:41 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG12571001 КАЖДАЯ книга (ея экземпляр) - имеет свой идентификатор типа - ИнвНомер (..на 17-й странице..)А вот это совершенно не факт. И как раз для таких моментов нужен заказчик. 2 Geronemo Давайте я вам помогу Итак имеем библиотеку - книги, авторы, читатели Действия (запросы) библиотекарь добавляет книгу (или экземпляры) в библиотеку читатель ищет книгу читатель берет книгу читатель возвращает книгу читатель смотрит наличие книги в библиотеке читатель смотрит кому выдавали экземпляры книги. библиотекарь списывает экземпляр книги. Geronemo Кстати, появился вопрос по синтаксису.Идите в форум для вашей СУБД во-во это - движняк где надо - он - во времени... автор...Итак имеем библиотеку - книги, авторы, читатели...прально, а так же примитивно - красиваыеБиблиотекарши,помещение, стеллаж, полка...и тд SERG1257 ..А вот это совершенно не факт. И как раз для таких моментов нужен заказчик... :)) пылится себе где-то некий экземпляр и даже не знает, что есть какой-то там - Заказчик и не только... ..((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 19:00 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG12571001 КАЖДАЯ книга (ея экземпляр) - имеет свой идентификатор типа - ИнвНомер (..на 17-й странице..)А вот это совершенно не факт. И как раз для таких моментов нужен заказчик. 2 Geronemo Давайте я вам помогу Итак имеем библиотеку - книги, авторы, читатели Действия (запросы) библиотекарь добавляет книгу (или экземпляры) в библиотеку читатель ищет книгу читатель берет книгу читатель возвращает книгу читатель смотрит наличие книги в библиотеке читатель смотрит кому выдавали экземпляры книги. библиотекарь списывает экземпляр книги. Geronemo Кстати, появился вопрос по синтаксису.Идите в форум для вашей СУБД Попробую тоже придумать какой-то список действий 1. В библиотеку пришел новый человек 2. В библиотеку поступила новая книга (n-экземпляров, возможно она уже есть в кол-ве m-экземпляров) 3. Читатель ищет книгу (по разным параметрам, по автору, какое-то конкретное произведение и т. д.) 4. Читатель берет книгу почитать 5. Читатель возвращает книгу. 6. Библиотекарь смотрит кому выдавали экземпляры книги (каким читателям, сколько всего раз и т. д.) 7. Библиотекарь смотрит как часто берут книги того или иного автора (тут тоже можно посмотреть сколько все в сумме брали и сколько каждый читатель в отдельности). 8. Библиотекарь списывает экземпляр книги (если был 1, то будет 0, запись о книге не удаляем). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 20:42 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Geronemo ... Попробую тоже придумать какой-то список действий 1. В библиотеку пришел новый человек 2. В библиотеку поступила новая книга (n-экземпляров, возможно она уже есть в кол-ве m-экземпляров) сначала как можно правильнее построить БД а уж потом пусть 3. Читатель ищет книгу (по разным параметрам, по автору, какое-то конкретное произведение и т. д.) 4. Читатель берет книгу почитать 5. Читатель возвращает книгу. 6. Библиотекарь смотрит кому выдавали экземпляры книги (каким читателям, сколько всего раз и т. д.) 7. Библиотекарь смотрит как часто берут книги того или иного автора (тут тоже можно посмотреть сколько все в сумме брали и сколько каждый читатель в отдельности). 8. Библиотекарь списывает экземпляр книги (если был 1, то будет 0, запись о книге не удаляем). Вы не спеша определитесь - в сутях - в процессах ... порисуйте их ... правильно будет периодически поспать (перекурить) во сне еще много-чо приснится...)) и, эта, пробуй-пробуй-пробуй ...до некоего просветления ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 21:13 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Geronemo Попробую тоже придумать какой-то список действийВот и пишите SQL для каждого действия. Потом можно напихать данных побольше и задумыватся об индексировании. Дальше пусть заказчик изменит свою точку зрения? согласно 1001 и потребует учитывать книги поштучно. Переделайте базу и перепишите SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 22:23 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
1001правильно будет периодически поспать (перекурить) во сне еще много-чо приснится...)) и, эта, пробуй-пробуй-пробуй ...до некоего просветления ;)) Пошел спать. Я уже не раз замечал, что с утра мозги начинают отрабатывать то, что не получилось вечером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 22:45 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257Geronemo Попробую тоже придумать какой-то список действийВот и пишите SQL для каждого действия. Потом можно напихать данных побольше и задумыватся об индексировании. Дальше пусть заказчик изменит свою точку зрения? согласно 1001 и потребует учитывать книги поштучно. Переделайте базу и перепишите SQL. ага Вы своим мозгом его закомплексуете сразу - индексы, скл-запросы и тд... заказчик опять же какой то... сам в собственно-придуманном потырыкается пусть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 22:53 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257. Вот недостатки навскидку 1 увеличили вероятность ошибки (оптимизатор не заругается на левую таблицу) 2 убрали возможность дать разные права 3 блокировка таблицы (типа индексы перестоить) блокирует обе таблицы 4 полный скан будет читать лишние страницы 1) Давайте сначала доберемся до SQL запросов, ага? Тогда и будем учить оптимизатор. 2) О каких разных права вы говорите? 3) Стоп. Я из 2-х таблиц сделал одну. Где вторая? Или вы сами с собой спорите? И перестройка индекса - оно конечно да, операция ежечасная. 4) А поподробнее можно? При правильных запросах и индексах и полный скан? P.S. А можно все-таки ответить на вопрос - вот есть два человека - Азимов и Брэдбери - оба они авторы - могут ли они читать произведения друг друга? P.P.S. Интересно, как с таким подходом вы будете каталог библиотеки с иерархией жанров строить ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 02:47 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
[оффтопик] >1) Давайте сначала доберемся до SQL запросов, ага? Ага и в КАЖДЫЙ запрос не забудьте добавить условие ISREADER или ISAUTHOR, а потом взгляните на код и сравните с разными таблицами. Где код чище, и вероятность облажатся меньше. >2) О каких разных права вы говорите? Я даю права одному пользователю на одну таблицу, другому на другую. Вы даете права обоим пользователям на обе таблицы >3) Стоп. Я из 2-х таблиц сделал одну. Где вторая? Или вы сами с собой спорите? Я провожу обслуживание большой таблицы - вторая доступна. У пока долгое обслуживание обьединенной таблицы не кончится заблокированы все. >4) А поподробнее можно? При правильных запросах и индексах и полный скан? Дополнительного скана не будет только при запросе одной строки. При любых других придется читать лишние страницы. >P.S. А можно все-таки ответить на вопрос - вот есть два человека - Азимов и Брэдбери - оба они авторы - могут ли они читать произведения друг друга? Заведу таблицу ЛЮДИ и еще две таблицы читатели со ссылкой на ЛЮДИ_id и писатели со ссылкой на ЛЮДИ_id >P.P.S. Интересно, как с таким подходом вы будете каталог библиотеки с иерархией жанров строить ;) Сформулируйте задачу постою. А теперь в порядке ответной любезности, назовите выгоды объединения таблиц. [/оффтопик] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 04:14 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257[оффтопик] >1) Давайте сначала доберемся до SQL запросов, ага? Ага и в КАЖДЫЙ запрос не забудьте добавить условие ISREADER или ISAUTHOR, а потом взгляните на код и сравните с разными таблицами. Где код чище, и вероятность облажатся меньше. Облажатся можно везьде. По поводу чистоты кода и прочего - фигня-с... Мы живем в реальном мире. SERG1257>2) О каких разных права вы говорите? Я даю права одному пользователю на одну таблицу, другому на другую. Вы даете права обоим пользователям на обе таблицы У меня ОДНА таблица. Мне незачем раздавать права на несколько таблиц. Вы усложнили админ. процедуру по раздаче прав. Еще один повод для облажаться, если с правами будет что-то не так. SERG1257>3) Стоп. Я из 2-х таблиц сделал одну. Где вторая? Или вы сами с собой спорите? Я провожу обслуживание большой таблицы - вторая доступна. У пока долгое обслуживание обьединенной таблицы не кончится заблокированы все. Сервер? Вы уверены, что сказанное вами истина в последней инстанции? Позвольте напомнить вам - есть блокировочники, а есть версионники. SERG1257>4) А поподробнее можно? При правильных запросах и индексах и полный скан? Дополнительного скана не будет только при запросе одной строки. При любых других придется читать лишние страницы. Ну будет как минимум скан по индексу, но от этого никуда не денешся при любом расскладе. Вы же говорили о полном скане, не так ли? SERG1257>P.S. А можно все-таки ответить на вопрос - вот есть два человека - Азимов и Брэдбери - оба они авторы - могут ли они читать произведения друг друга? Заведу таблицу ЛЮДИ и еще две таблицы читатели со ссылкой на ЛЮДИ_id и писатели со ссылкой на ЛЮДИ_id Занафига? А потом заведете таблицы ЖЕНЩИНЫ и МУЖЧИНЫ? И куда ж ваша красота запросов денется? Это просто ж простор для "облажаться" ;) Может все-таки во избежание сумбура стоит разделить понятия "сущность" и "аттрибут"? SERG1257>P.P.S. Интересно, как с таким подходом вы будете каталог библиотеки с иерархией жанров строить ;) Сформулируйте задачу постою. Дык предложил-же - постройте каталог для библиотеки. SERG1257А теперь в порядке ответной любезности, назовите выгоды объединения таблиц. [/оффтопик] Постарался назвать. Ну хотя бы то, что идет оперирование одной сущностью - "человек". И добавление нового атрибута (я предложил "пол") никак не усложняет жизнь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 05:04 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
DarkMaster Мне незачем раздавать права на несколько таблиц. Вы усложнили админ. процедуру по раздаче прав.Зачем тогда останавливаться. Пусть у вас все пользователи будут иметь все права. И администрирование будет упрощено, так? DarkMaster Позвольте напомнить вам - есть блокировочники, а есть версионники. Но суть проблемы вы уловили. DarkMaster Ну будет как минимум скан по индексу, но от этого никуда не денешся при любом расскладе. Вы же говорили о полном скане, не так ли? Конечно. Но у меня идет скан таблиц или индексов ОДНОЙ таблицы, а у вас объединенной из двух. DarkMaster Занафига?Потому что это типовой прием для реализации наследования. Вас способ - запихать в одну таблицу тоже годится, но для задач библиотеки (тем более учебной задачи) недостатки перевешивают достоинства. DarkMaster Дык предложил-же - постройте каталог для библиотеки. Если бы вы знали сколько проблем возникает из-за недопонимания, такие очевидные и однозначные вещи разные люди трактуют по-разному. Откройте другой топик, изложите максимально подробное описание задачи с граничными условиями и тогда получите свой ответ. DarkMaster Постарался назвать.Э нет. Вы пока только ругали мои аргументы, но не привели своих. DarkMaster Ну хотя бы то, что идет оперирование одной сущностью - "человек"В задаче библиотеки сущности ДВЕ - читатели и писатели. Книжки читатель берет, а писатель пишет. У них совершенно разные атрибуты. Давайте прекратим оффтопик. Я предпочитаю все разложить по полочкам, вы любите валить все в кучу, вряд ли мы что либо докажем ТС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 05:34 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
> В задаче библиотеки сущности ДВЕ - читатели и писатели. Вообще говоря, одна сущность. На месте автора вопроса я бы пошёл другим путём: взял бы готовый пакет для управления библиотекой и попытался разобраться в структуре базы данных. Заодно бы получил полезные представления о классификации, кодировании и пр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 07:19 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
DarkMasterGeronemo, Таблицы "авторы" и "читатели" - суть одно и тоже. Можно совместить данные в одной таблице, добавив флаг ISREADER или ISAUTHOR. Заодно решишь вопрос - "может ли читатель быть писателем и наоборот" и избежишь дублирования данных. кроме этого, авторов у книги может быть много, а тут только одна. по читателям и писателям - атрибуты у них очевидно разные будут, по авторам в сторону автобиографии, по читателям в сторону идентификации личности и установления места жительства и способов оплаты штрафов. Там паспорт и т. п. . Паспорт - еще одна долгая история, паспортов там дофига всяких... У авторов кстати имен много, псевдонимы... так что если и сводить в одно читателей и писателей, то надо использовать наследование и сильно думать... Еще очевидно надо использовать экземпляры книг, у каждой книги есть инвентарный номер и т.д. можно и нужно также охватить хранение книг, где, шкаф, пленка, место и так далее. тоже отдельная долгая история. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 08:04 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257, Потому что это РАЗНЫЕ сущности - писатели пишут книги, а читатели пользуются библиотекой. Общего у них только принадлежность к людям. на самом деле общего у них еще меньше. писатели - не люди. общего у них с людьми, что они также могут идентифицироваться полным именем , но на самом деле не обязательно человека. и также как у людей неуникально. еще, я вспомнил, что псевдоним может быть один на группу авторов (Козьма Прутков), и индивидуально на автора (Илья Ильф и Евгений Петров, второе - псевдоним). Так что я уже против наследования авторовов и людей, надо наследовать авторов и псевдонимы. а вообще, библиотека - достаточно сложная предметная область. можно делать частную библиотеку а не публичную, будет немного проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 08:19 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
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)); Дата взятия книги как уже обращали внимание, просто необходима, ибо при существующей схеме второй раз книжку читателю не взять на руки. Ну и конечно, в схеме библиотеки должны присутствовать не только писатели и читатели. Я там ещё библиотекарей постоянно встречаю. Вечно снуют туда-сюда. И однако не лишним было бы знать кем выдана книга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 08:29 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Предлагаю участникам дискуссии слегка притормозить - это УЧЕБНЫЙ проект, автор выбрал библиотеку как знакомую ему (внешне) сферу деятельности. Поэтому, Geronemo, - модифицируй базу чтобы учитывать множество авторов у книги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 08:49 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
DarkMasterSERG1257. Вот недостатки навскидку 1 увеличили вероятность ошибки (оптимизатор не заругается на левую таблицу) 2 убрали возможность дать разные права 3 блокировка таблицы (типа индексы перестоить) блокирует обе таблицы 4 полный скан будет читать лишние страницы 1) Давайте сначала доберемся до SQL запросов, ага? Тогда и будем учить оптимизатор. 2) О каких разных права вы говорите? 3) Стоп. Я из 2-х таблиц сделал одну. Где вторая? Или вы сами с собой спорите? И перестройка индекса - оно конечно да, операция ежечасная. 4) А поподробнее можно? При правильных запросах и индексах и полный скан? P.S. А можно все-таки ответить на вопрос - вот есть два человека - Азимов и Брэдбери - оба они авторы - могут ли они читать произведения друг друга? P.P.S. Интересно, как с таким подходом вы будете каталог библиотеки с иерархией жанров строить ;) брадцы, вы об чём...) ТС - на 'этой земле' делает первые шаги... пусть поспотыкается набъёт шишек.. и это - правильно и полезно же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 08:52 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
1001, если внимательно прочитать сообщения, то в выделенной Вами цитате разговор далёк от библиотеки автора темы. Они там реальный случай с объединением кучи таблиц рассматривали. Так что обсуждение перестройки индексов там вполне уместно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 09:14 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Mr.Fontaine1001, если внимательно прочитать сообщения, то в выделенной Вами цитате разговор далёк от библиотеки автора темы. Они там реальный случай с объединением кучи таблиц рассматривали. Так что обсуждение перестройки индексов там вполне уместносогласен но ТС-то клюет 'навсё' мой посыл был именно в этом смысле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 09:33 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257Предлагаю участникам дискуссии слегка притормозить - это УЧЕБНЫЙ проект, автор выбрал библиотеку как знакомую ему (внешне) сферу деятельности. Поэтому, Geronemo, - модифицируй базу чтобы учитывать множество авторов у книги. Ну и что? На учебных проектах и нужно учиться анализировать предметную область. А именно этого автор топика и не сделал сходу. Очевидная мысль о множестве авторов у книги ему в голову не пришла, хотя в IT книги большей частью написаны именно в соавторстве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 10:29 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
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)); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 13:18 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 13:38 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257DarkMaster А зачем плодить сущности изначально? Потому что это РАЗНЫЕ сущности - писатели пишут книги, а читатели пользуются библиотекой. Общего у них только принадлежность к людям. Да-а-а-а ... я чувствую вы научите новичка разрабатывать БД ... А сущность "сотрудник библиотеки" вы в ещё одной таблице будете хранить ? Вы так договоритесь до того, что книги с зелёной обложкой вы будете хранить в одной таблице, а книги с синей обложкой - в другой. Не, ну а чо, обложки-то разного цвета... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 13:52 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Geronemo, Постараюсь обьяснить свою идею общей таблицы для писателей/читателей и прочего: - все они имеют общие аттрибуты (ФИО, пол и т.п), использование которых диктуется только необходимостью (ну пусть будет таблица PEOPLE) - все могут выступать в минимум 2-х ипостасях - и как писатель и как читатель - книга имеет ссылку минимум на одного автора, или на нескольких авторов (соотношение один ко многим) - журнал приема-выдачи - хранит ссылку на читателя и книгу (соотношение один к одному) - псевдонимы, коллективные псевдонимы - это дополнительная таблица, которая содержит связку один ко многим (псевдоним - ссылки на авторов) - ссылка на автора, ссылка на читателя - есть ID из PEOPLE. Как минимум такой подход позволяет манипулировать только одной сущностью. Например изначально была запись "Э. Ремарк". Мы только в одном месте изменим ее на "Эрих Мария Ремарк" и у нас во всех результатах запросов появится именно Эрих Мария Ремарк. Вне зависимости от того, писатель это, читатель, член авторского коллектива или рецензент. И нам не нужно тараканить по базе, меняя эту инфу в разных таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 14:51 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
DarkMaster, может тогда сделать так ? 1. Таблица People, в ней как можно больше данных о человеке, кто, откуда, пол и т. д. и т. п. 2. Таблица Readers, здесь id, id из people, возможно еще какие-то поля, типа читательского рейтинга (добросовестный или говнюк) 3. Таблица Writer, тоже id, id из People, Псевдоним, может что-то еще. Т. е. получается, если по аналогии с ООП, то class People class Readers extends People class Writer extends People ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 15:38 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
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ртейку кот-я точно доведет его до - ченибудь реального ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 15:56 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
GeronemoDarkMaster, может тогда сделать так ? 1. Таблица People, в ней как можно больше данных о человеке, кто, откуда, пол и т. д. и т. п. 2. Таблица Readers, здесь id, id из people, возможно еще какие-то поля, типа читательского рейтинга (добросовестный или говнюк) 3. Таблица Writer, тоже id, id из People, Псевдоним, может что-то еще. Т. е. получается, если по аналогии с ООП, то class People class Readers extends People class Writer extends People+1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 16:03 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Geronemo, Ну примерно так. Т.е. есть основная инфа (таблица PEOPLE) - которая заполняется всегда, есть дополнительная инфа (доп. атрибуты), которая хранится где-то рядышком (в другой таблице) и заполняется только при необходимости. Т.о. получим, что биография Васи Пупкина нам особо не нужна, бо он не писатель, а те же данные по биографии Ремарка - могут быть интересны. Т.е. по факту мы имеем 2-х людей - Ремарка и Пупкина в таблице PEOPLE. Которые могут фигурировать как авторы в таблице BOOK2AUTHOR (книга <-> автор(ы) и которые могут фигурировать в таблице JOURNAL (book <-> reader). В дополнение мы можем завести себе AUTHOR_BIO (автор-биография), READER_BAD (штрафники) и еще кучу всякого, но по сути всегда будем знать, что любая ссылка на человека - она в таблице PEOPLE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 16:19 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
> я немного подумав, решил обратно разделить писателей и читателей Плохо подумали. > я подумываю у писателей объединить firstName и lastName в fullname Ещё раз плохо подумали. > Френсис Скотт Фитцжеральд Francis Scott Key Fitzgerald. Упс, да? Видите ли, в чём проблема: если вы хотите научиться проектировать, вам нужно выбрать другой путь. Если освежить dml, - можно делать то, что вы делаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 17:16 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Получается что-то типа того, норм ? Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 17:17 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Ну полагаю можно подвести некоторые итоги для Geronemo Любая база суть модель реальной действительности. Модель может быть адекватной и не очень (одна моделька машины имеет только колеса и ездит, другая моделька имеет колеса, открывающиеся дверцы, но не ездит). В том и планида проектировщика, чтобы выбрать нужную модель, причем такую которая переживет смену мнений заказчика. Если проектировщик выбрал верно, то этого никто не заметит, а вот если ошибся, то пеняют все (как можно заблудится в трех соснах, это же очевидно). Это задача проектировщика (точнее менеджера проекта) решать когда сказать - хватит углублятся, давайте уже сделаем пилотный проект Одного правильного ответа (типа 2*2=4) не существует. Для того же наследования я знаю три разных реализации (с одной таблицей, двумя или тремя) , каждая со своими достоинствами и недостатками. И это задача проектировщика выбрать одну реализацию, котораю будет использовать достоинства и нивелировать недостатки и ответить за свой выбор (см выше). При всем богатстве идей, крайне важна фигура заказчика - человека который оценивает результат и платит гонорар (в универе это научный руководитель). Именно его хотелки должны реализовываться в первую очередь (любой каприз за ваши деньги). Проектировщик может только предупредить о последствиях и подстелить соломки, если в военное время или по особому распоряжению синус будет равен двум. Для ощущения полного цимеса, лучше проводить изменения на живой базе с данными (а лучше с большим количеством данных и жестким временем простоя). Только тогда разработчик поймет прелесть ограничений (constraint) базы (которые вернут ошибку сразу, а не неправильные данные потом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 17:57 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257Ну полагаю можно подвести некоторые итоги для Geronemo Любая база суть модель реальной действительности. Модель может быть адекватной и не очень (одна моделька машины имеет только колеса и ездит, другая моделька имеет колеса, открывающиеся дверцы, но не ездит). В том и планида проектировщика, чтобы выбрать нужную модель, причем такую которая переживет смену мнений заказчика. Если проектировщик выбрал верно, то этого никто не заметит, а вот если ошибся, то пеняют все (как можно заблудится в трех соснах, это же очевидно). Это задача проектировщика (точнее менеджера проекта) решать когда сказать - хватит углублятся, давайте уже сделаем пилотный проект Одного правильного ответа (типа 2*2=4) не существует. Для того же наследования я знаю три разных реализации (с одной таблицей, двумя или тремя) , каждая со своими достоинствами и недостатками. И это задача проектировщика выбрать одну реализацию, котораю будет использовать достоинства и нивелировать недостатки и ответить за свой выбор (см выше). При всем богатстве идей, крайне важна фигура заказчика - человека который оценивает результат и платит гонорар (в универе это научный руководитель). Именно его хотелки должны реализовываться в первую очередь (любой каприз за ваши деньги). Проектировщик может только предупредить о последствиях и подстелить соломки, если в военное время или по особому распоряжению синус будет равен двум. Для ощущения полного цимеса, лучше проводить изменения на живой базе с данными (а лучше с большим количеством данных и жестким временем простоя). Только тогда разработчик поймет прелесть ограничений (constraint) базы (которые вернут ошибку сразу, а не неправильные данные потом) стройные нозьки острый Ум.. и, главное, душа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 18:11 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
On 08.09.2014 14:18, Geronemo wrote: > В общем пусть будут пока и Читатели и Писатели. Более того, я подумываю > у писателей объединить firstName и lastName в fullname. > Иначе как мне именовать Эрик Мария Ремарка и Френсис Скотт Фитцжеральда. > Это реально проблема, с которой я уже столкнулся. А это -- две несвязанные проблемы. Объединять ли читателей и писателей, или нет, и -- именования. Такие имена могут быть и у читателей. На самом деле вообще имя в виде "Фамилия, имя, отчество" -- это специфика стран бывшего СССР. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 19:30 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
> Да-а-а-а ... я чувствую вы научите новичка разрабатывать БД ... > А сущность "сотрудник библиотеки" вы в ещё одной таблице будете хранить ? Ты абсолютно прав. Но в контексте данной темы я бы НЕ настаивал на использовании наследования и хранении в одной таблице. Я уже написал, почему. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 19:31 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
On 08.09.2014 15:51, DarkMaster wrote: > - все они имеют общие аттрибуты (ФИО, пол и т.п), использование которых > диктуется только необходимостью (ну пусть будет таблица PEOPLE) > - все могут выступать в минимум 2-х ипостасях - и как писатель и как > читатель ЕЩЁ РАЗ!! Писатель может быть не обязательно человеком. Может быть человек, может быть человек под псевдонимом, может быть коллектив, где каждый может быть под своим именем, или под псевдонимом, либо может быть коллектив, где все выступают под одним псевдонимом. Причём псевдонимом может выступать как имя, так и прозвище, или вообще абстрактная подпись. "Огненный лев", "пламенные борцы за победу революции", "Коллектив трудящихся завода Полиграфмаш" и т.п. > - книга имеет ссылку минимум на одного автора, или на нескольких авторов > (соотношение один ко многим) Книга должна ссылаться на автора через его имя или псевдоним. При этом реального автора может вообще не быть, не быть человека, стоящего за этим псевдонимом. Кстати, есть ещё и произведения с неизвестным автором, и приписываемые какому-то автору. > - журнал приема-выдачи - хранит ссылку на читателя и книгу (соотношение > один к одному) Читатели могут обычно брать по несколько книг. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 19:38 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 19:39 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
> Любая база суть модель реальной действительности. Поправлю: модель представлений о действительности. На самом деле это важное уточнение, которое делает контекст составной частью модели. Менеджер проекта вряд ли имеет об этом представление, так что роль архитектора баз данных несколько шире, чем принято считать. > Одного правильного ответа (типа 2*2=4) не существует. Он существует в том смысле, что для выбранного подмножества контекстов есть модель, состоящая только из элементарных сущностей с атомарными атрибутами. > крайне важна фигура заказчика Никакой роли фигура заказчика не играет; как правило, заказчик - обычный тупой баран. Важно исключительно техническое задание. Как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 20:56 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
guest_20040621... как правило, заказчик - обычный тупой баран . Важно исключительно техническое задание. Как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 21:13 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
1001, дружище, покажите мне другого заказчика - умного, компетентного, грамотного, - я бесплатно приму участие в его проектах. Деградация в России имеет тотальный характер, было бы странно, если бы она касалась только разработчиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2014, 21:58 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257При всем богатстве идей, крайне важна фигура заказчика - человека который оценивает результат и платит гонорар (в универе это научный руководитель). Именно его хотелки должны реализовываться в первую очередь (любой каприз за ваши деньги). Проектировщик может только предупредить о последствиях и подстелить соломки, если в военное время или по особому распоряжению синус будет равен двум. Думаю можно придумать виртуального заказчика. Дело в том, что я ищу работу в сфере программирования и вижу, что на всех собеседованиях меня довольно серьезно спрашивают про SQL. Т. ч. пусть у нас заказчик будет потенциальным работодателем, которыму данную работу можно показать как некое портфолио. Ну а я сам в процессе создания БД и СУБД довольно серьезно освою синтаксиси разного рода элементы SQL. Возможно даже какие-то нюансы. Итак Заказчик - Потенциальный работодатель, который хочет увидеть систему, которая ему понравится и на основе чего он сделает вывод, что ТС, в целом, понимает, что такое проектирование БД, грамотный запросы, оптимизация и др. нюансы. Т. е. если есть какая-то возможность навернуть систему, чтобы показать, что я этой темой владею, а можно оставить простенько, но чтобы все работало, то лучше систему искусственно немного навернуть. Ну и разумеется, чтобы в этих наворотах был практический смысл какой-то, например, если бы это было реальное задание написать БД и СУБД для очень большой библиотеки, сделать все основное и оставить себе некоторые заделы на возможный апгрейд. MasterZivOn 08.09.2014 17:03, ChA wrote: > Т. е. получается, если по аналогии с ООП, то > class People > class Readers extends People > class Writer extends People > > +1 Да -100 ! Поясните пожалуйста, знак минуса. Я не совсем понимаю, тут какой-то сарказм, '-' это на самом деле тире или и вам так не нравится, прокомментированное Вами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2014, 00:52 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
GeronemoMasterZivOn 08.09.2014 17:03, ChA wrote: > Т. е. получается, если по аналогии с ООП, то > class People > class Readers extends People > class Writer extends People > > +1 Да -100 ! Поясните пожалуйста, знак минуса. Я не совсем понимаю, тут какой-то сарказм, '-' это на самом деле тире или и вам так не нравится, прокомментированное Вами.Не волнуйтесь, у Вас нормальное решение. Это стандартный механизм subtyping-а, применяемый при проектировании. Можете погуглить "subtyping database" или почитать, например - это для полноты картины. Впрочем, вариант с 2 таблицами, предложенный SERG1257 тоже нормальный. Всё зависит от задачу, которую Вы перед собой поставили. Можно, при желании, расширить модель и до степени, подразумеваемой MasterZiv, расширив понятия книги до любого источника, а автора до любого множества неизвестных сущностей, типа авторов Библии. Сейчас Вам решать, на каком уровне остановиться. В реальной задаче Вам всё равно придется "скакать" от ТЗ и, дай Бог, что оно будет вменяемым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2014, 01:57 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
GeronemoSERG1257При всем богатстве идей, крайне важна фигура заказчика - человека который оценивает результат и платит гонорар (в универе это научный руководитель). Именно его хотелки должны реализовываться в первую очередь (любой каприз за ваши деньги). Проектировщик может только предупредить о последствиях и подстелить соломки, если в военное время или по особому распоряжению синус будет равен двум. Думаю можно придумать виртуального заказчика. Дело в том, что я ищу работу в сфере программирования и вижу, что на всех собеседованиях меня довольно серьезно спрашивают про SQL. Т. ч. пусть у нас заказчик будет потенциальным работодателем, которыму данную работу можно показать как некое портфолио. Ну а я сам в процессе создания БД и СУБД довольно серьезно освою синтаксиси разного рода элементы SQL. Возможно даже какие-то нюансы. Итак Заказчик - Потенциальный работодатель, который хочет увидеть систему, которая ему понравится и на основе чего он сделает вывод, что ТС, в целом, понимает, что такое проектирование БД, грамотный запросы, оптимизация и др. нюансы. Т. е. если есть какая-то возможность навернуть систему, чтобы показать, что я этой темой владею, а можно оставить простенько, но чтобы все работало, то лучше систему искусственно немного навернуть. Ну и разумеется, чтобы в этих наворотах был практический смысл какой-то, например, если бы это было реальное задание написать БД и СУБД для очень большой библиотеки, сделать все основное и оставить себе некоторые заделы на возможный апгрейд. MasterZivOn 08.09.2014 17:03, ChA wrote: > Т. е. получается, если по аналогии с ООП, то > class People > class Readers extends People > class Writer extends People > > +1 Да -100 ! Поясните пожалуйста, знак минуса. Я не совсем понимаю, тут какой-то сарказм, '-' это на самом деле тире или и вам так не нравится, прокомментированное Вами. да, так не нравится. плоский уже писал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2014, 13:09 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
MasterZiv, не "плоский", а "почему" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2014, 13:11 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
guest_20040621как правило, заказчик - обычный тупой баранМой пойнт был не в интеллектуальных способностях заказчика, а в том что даже в рамка форума было много Ценных Указаний и Важных Замечаний. В процессе работы их будет не меньше, причем они будут противоречить друг другу. Значит какие-то из них придется игнорировать, какие-то принимать к исполнению. Кроме того в процессе работы будет немало "серых зон" допускающих двоякое толкование. Для этого и нужно обоснование - "со слов заказчика". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2014, 17:47 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257guest_20040621как правило, заказчик - обычный тупой баранМой пойнт был не в интеллектуальных способностях заказчика, а в том что даже в рамка форума было много Ценных Указаний и Важных Замечаний. В процессе работы их будет не меньше, причем они будут противоречить друг другу. Значит какие-то из них придется игнорировать , какие-то принимать к исполнению. Кроме того в процессе работы будет немало "серых зон" допускающих двоякое толкование. Для этого и нужно обоснование - "со слов заказчика". Самое правильное - давать начальнику-барану подмахивать документы, содержащие его текущие галлюцинации. В дальнейшем, по ходу долгой пьесы, будет проще с ним разговаривать, имея эти документы под рукой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2014, 17:54 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
guest_200406211001, дружище, покажите мне другого заказчика - умного, компетентного, грамотного, - я бесплатно приму участие в его проектах. Деградация на шарике - имеет глобальный характер,... ну - Я *)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2014, 17:58 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
> Мой пойнт был не в интеллектуальных способностях заказчика Мой, собственно, тоже. Интеллект - не самая важная характеристика и не антоним "барана". > даже в рамка форума было много Ценных Указаний и Важных Замечаний "Даже" - лишнее слово. В отсутствие формальной задачи обсуждение имеет скорее развлекательный характер. Причём, складывается впечатление, что высказавшиеся книг в принципе никогда не читали, а о научных библиотеках никогда не слышали. "Перевод", "периодическое издание", "стереотипное издание", "сборник" и пр. - понятия из другого измерения. Ничего личного, просто мысли вслух. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2014, 20:20 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
> ну - Я Спасибо, смешно. Оценку "баран" вам нужно ещё заработать, вы в самом начале длинного пути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2014, 20:22 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
guest_20040621... обсуждение имеет скорее развлекательный характер. Причём, складывается впечатление, что ...вслух. нечего добавить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2014, 20:32 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
guest_20040621> ну - Я Спасибо, смешно. Оценку "баран" вам нужно ещё заработать, вы в самом начале длинного пути. пожелай мне удачи ..и я никому не хочу ставить ногу на грудь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2014, 20:52 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
> пожелай мне удачи Вы, видимо, здесь недавно. Пожеланий нет, есть пара рекомендаций. Научитесь незнакомым людям говорить "вы". Это поможет избежать неожиданных конфузов разного рода. Не лезьте в обсуждения тем, где вы ни ухом, ни рылом. По тем же причинам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 00:13 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
guest_20040621> пожелай мне удачи Вы, видимо, здесь недавно. Пожеланий нет, есть пара рекомендаций. Научитесь незнакомым людям говорить "вы". Это поможет избежать неожиданных конфузов разного рода. Не лезьте в обсуждения тем, где вы ни ухом, ни рылом. По тем же причинам. это из песни ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 00:21 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Ладно, думаю надо мне на чем-то остановиться, все0таки время идет. На данный момент моя БД выглядит так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Минимальный набор процедур 1. В библиотеку поступали определенная книга (возможно несколько экземпляров). Тут мы заодно проверяем автора и если его нету, то создаем и его 2. Библиотекарь создает нового автора (может показаться бессмысленной процедурой, т. к. п. 1 предусматривает создание авторов, но думаю такая функция все же должна быть). 3. В библиотеку пришел новый читатель - создаем ему аккаунт. 4. Библиотекарь проверяет наличие книги в библиотеке (по просьбе читателя, в основном) 5. Читатель берет книгу 6. Читатель возвращает книгу 7. Библиотекарь смотрит статистику, какие книги берут (эта функция нужна, библиотекарь мог какие-то книги дозаказать) 8. Библиотекарь списывает книгу. 9 и т. д. В общем я ршил, что Будет ни одна, ни три, а 2 таблицы - читатели и писатели. Также я ввел понятие physicalCondition для книги. По дефолту все книги приходят новыми. Но со временем некоторые приходят в не очень удовлетворительное состояние и библиотекарь помечает ее. В будущем он закажет такую книгу (не знаю, как часто в библиотеках происходят обновления, раз в неделю допустим), а эту спишет. Так-с... ммм... нам все равно, куда оуходят списанные книги (домой библиотекарю или в детский дом), но есть интересный вопрос, надо ли нам где-то сохранять информацию, что книга списана. Вопрос нескольких авторов тоже надо как-то решить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 16:11 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
GeronemoВопрос нескольких авторов тоже надо как-то решить. есть такой вариант create table WriterOfBook (id int(10) auto_increment, bookId int(10), authorId int(10), foreign key (bookId) references Book (id), foreign key (authorId) references Writer(id), primary key (id)); Можно будет делать 3 записи, если 3 автора, т. е. Книга1, Автор1 Книга1, Автор2 Книга1, Автор3 Книга2, Автор4 а в таблице Book получается убрать упоминание об авторе... хм... или ввести поле info, куда можно записать в произволной форме и авторов и краткое содержание и издателсьво. хм.. Или издательство сохранять отдельно (чтобы смотреть книги каких издательств выходят чаще из строя)... (думаю вслух) или же забить на этот нюанс и для начала сделать то, что есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 16:22 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Теперь реализуйте поддержку каждого экземпляра поштучно. Кроме того реализуйте массовую загрузку книг из, скажем старой версии программы для библиотекаря. И напоследок задача предложенная DarkMaster - каталог для поиска нужной книги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 17:39 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Geronemo physicalCondition для книги. По дефолту все книги приходят новыми. Но со временем некоторые приходят в не очень удовлетворительное состояние и библиотекарь помечает ее. В будущем он закажет такую книгу (не знаю, как часто в библиотеках происходят обновления, раз в неделю допустим), а эту спишет. Удаляю понятие physicalCondition, ибо тогда придется в таблице Book удалять поля к-во книг и к-во книг в наличии, а вместо этого для каждой книги делать свою запись. Хотя можно ввести еще одну таблицу, что-то типа архива, куда перемещаются книги в неудовлетворительном состоянии в процессе списания их. В этой таблице могут находиться книги, как уже перемещенные в детский дом, выброшенные, так и лежащие на отдельной полке. И в принципе эту полку можно также рассматривать, когда мы хотим найти книгу. Алгоритм if (книга в наличи) выдаем книгу(); else if (книга списана, но физически все еще присутствует в библиотеке) выдаем списанную книгу(); Или зачем все так усложнять, хм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 18:24 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Geronemo, У Вас в таблице Book смешаны издание и экземпляр издания. Name - это атрибут издания, а physicalCondition - атрибут экземпляра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 18:36 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Geronemo, база конечно примитивная. Для учебных целей сойдёт конечно. Но для нормального использования нихрена не получится. Главная ошибка в том, что писатели считаются авторами книги. На самом деле авторами физически существующей книги являются ИЗДАТЕЛЬСТВА. А писатели являются авторами ПРОИЗВЕДЕНИЯ. Таких понятий в Вашей базе нет вообще (хотя мысль про издательства маленько Вас посетила, но записывать его в какое-то общее поле - это явно не путь к истине). Надо продумать наличие в БД издательств и произведений, чтоб БД библиотеки была более-менее приемлемая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 08:28 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Mr.FontaineНадо продумать наличие в БД издательств и произведений, чтоб БД библиотеки была более-менее приемлемая. С точки зрения пользователя библиотеки, ему частенько фиолетово, какой у книги издатель. Приходим, просим книгу Кнута. Вы помните, кто и когда ее издавал? Сведения об издательстве конечно нужны, но не приоритетны. И запрос более удобно строить не как "покажите мне книги издательства NNN", а как "покажите мне книги Кнута (если можно - с издательствами)". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 13:51 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
DarkMaster, полностью согласен, что пользователю фиолетово даже не то что кто издал книгу, ему название книги фиолетово. Он просто хочет прочитать "Бесы" Достоевского, а кто издал, издал ли отдельным изданием или в полном собрании сочинений или в в журнале каком (Роман-газета, например раньше выпускалась, сейчас не знаю, не интересовался) посетителю библиотеки (ну в частности, мне лично) вообще по барабану. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 14:44 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Mr.Fontaine, Есть стандарт библиографического описания, им и надо руководствоваться при проектировании БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 16:59 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Ы, думается мне эту фразу лучше обратить топикстартеру. Ибо как он запишет к себе в базу например, такую книгу Код: plaintext или какие проивзедения можно прочитать взяв двухтомник сочинений Зинаиды Гиппиус. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 11:18 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Ребята, давайте жить дружно. Когда я дорасту, я верну понятие физического состояния книги, также отделю сущность произведение от издания, введу понятие издательства, добавлю возможность нескольких авторов у одного произведения, нескольких произведений у одной книги (а что если это сборник сказок и их штук 100 в книге) и т. д. Но пока что даже с моей примитивной БД я час бился вот над такой процедурой create procedure FindPopularBooks () begin select Book.bookName, Writer.fullName, count(*) from Book, Writer, TakenBooks where TakenBooks.bookId = Book.id and Book.authorId = Writer.id group by bookId order by count(*) desc; end$$ есть еще пара процедур, которые я хотел бы, чтобы они были и чтобы они работали. Когда все будет готово, перейду из 2-го класса во 3-й. (1-й класс был у меня, когда я только и знал - как делать select, insert и update). И так постепенно закончу "школу". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 17:21 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Во-первых: это не процедура, а запрос (то что он оформле в виде процедуры это его личное дело) Во-вторых: форматирование ужасно. В-третьих: Book.bookName, Writer.fullName должны быть в группировке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 17:46 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257В-третьих: Book.bookName, Writer.fullName должны быть в группировке Эээ, зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 17:52 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин Эээ, зачем? Потому что у ТС синтаксическая ошибка. Я предположил что автору надо Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 18:01 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257Кот Матроскин Эээ, зачем? Потому что у ТС синтаксическая ошибка. Я предположил что автору надо Код: sql 1. 2. 3. 4. 5. 6. чем результат будет отличаться от просто Код: sql 1. 2. 3. Какой смысл нахождения в группировке неключевых атрибутов сущности, когда там уже есть первичный ключ этой сущности (ну или, как в данном случае, равное ему значение из другого поля выборки)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 18:35 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин чем результат будет отличаться от простоТем что мой запрос выполнится, а его вернет синтаксическую ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 18:49 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257Кот Матроскин чем результат будет отличаться от простоТем что мой запрос выполнится, а его вернет синтаксическую ошибку. а, из-за селекта - ну да, тогда надо, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 18:54 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257, мой тоже выполняется. Нету никаких синтаксических ошибок. И еще я не очень понял вас по поводу форматирования. Если вы про Ентер и табуляцию, то можно сделать и так Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 19:00 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Кстати, похоже наступило время усложнения БД, т. к. я создал 4 таблицы и кучу процедур (по названиям примерно понятно, чем они занимаются). Все работает. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 19:04 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Geronemo, А у Вас какой сервер? Если он умеет оптимизировать такую запись запроса - это хорошо, хоть и не соответствует стандарту SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 19:05 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, MySQL Но если вы считаете, что правильнее перечислить все поля в group by, то я так и сделаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 13:41 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Geronemo, сорри, конечно вернемся сюда 16546062 за это время у вас в 'мировоззрении' чото поменялосьже мож тогда обозачимся 'сначала' сорри, конечно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2014, 14:36 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Я тут нарисовал схему БД (т. е. часть ее, посвященная книгам). В центре внимания у нас находится "Литературное произведение". Он связано 1toMany с таблицей "Писатели", т. к. одно произведение могут написать несколько авторов. И также оно связано отношением ManyToMany с таблицей "Книги", т. к. в одной книге могут быть много произведений и точно также 1 книга может состоять из нескольких томов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 11:39 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
GeronemoОн связано 1toMany с таблицей "Писатели", т. к. одно произведение могут написать несколько авторов. А один автор не может написать несколько произведений? Разумееется, нужно many-to-many. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 11:56 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинА один автор не может написать несколько произведений? Разумееется, нужно many-to-many. Да, конечно. Спс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 12:08 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
В моей модели таблица авторы и книги никак не пересекаются. Они связаны только через таблицу "литературное произведение". Вам нравится такая модель ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 12:10 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Что значит "нравится"? Это правильно, они и не должны быть связаны. Более того, понятие "книга" размыто и неконкретно, нужно понятие "издание". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 13:34 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
И еще «экземпляр издания» — тот, что на полке стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 13:54 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Как вам такая реализация. Я завел 2 таблицы, которые занимаются связями ManyToMany. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 14:50 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Кто-нибудь, подтвердите плиз, правильные ли я завел таблицы и правильно ли их связал. А то у меня из-за сомнений проект на паузе стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 17:04 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Geronemo Кто-нибудь, подтвердите плиз, правильные ли я завел таблицы и правильно ли их связалДак напиши по русски что сказать-то хотел. А то 4 совершенно правильный ответ на вопрос 2*2, но неверный на вопрос 1+1. Я бы посоветовал не связываться с изданием (пособие по укладке парашюта, издание второе исправленное) - в первом приближении можно считать новое издание новой книгой, но реализовать поэкземплярый учет. Для начала определите атрибуты книги (или издания) и экземпляра книги. Потом перепишите весь SQL в рамках новой концепции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 17:41 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
SERG1257, я и не стал связываться с изданием. Я создал 5 таблиц, которые, как мне кажется соответствуют рисунку чуть выше. softwarer написал мне, что у меня все правильно на рисунке. Вопрос в том, правильно ли я сделал, что завел 5 именно таких таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 17:45 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
Вкратце Писатель имеет атрибуты - имя, фамилия, полное имя(оно же псевдоним) и краткую биографию (поле инфо) Литературное произведение имеет название. Книга имеет также название, количество книг в библиотеке и текущее количество. На эти 3 понятия я хавел 3 таблицы. + 2 таблицы, которые связывают 1 и 2 таблицу и 2 и 3. Эти таблицы состоят из своего id и id соответствующих таблиц, которые указывыают, какие именно авторы писали это произведение, какие произведения написал этот автор и аналогично для таблицы, связывающей произведения и книги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 17:52 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
GeronemoКто-нибудь, подтвердите плиз, правильные ли я завел таблицы и правильно ли их связал. А то у меня из-за сомнений проект на паузе стоит. судя по этому - 16614727 вы - бежите 'впереди себя' .. Вы - определитесь в Сутях от самого - простого 'случая' типа что такое Книга(....) - Автор(....) - и тд начните просто в визарде бзо-всяких криэйттэйбл произведение : автор потом - добавляйте с каждой стороны и пробуйте - пробуйте до просветления ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:16 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
GeronemoВ моей модели таблица авторы и книги никак не пересекаются. Они связаны только через таблицу "литературное произведение". Вам нравится такая модель ? Книга - физический носитель, вероятно. У нее, а не только у произведений, есть авторы. Например, художник оформил обложку) В общем, все очень сыро у Вас, пока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:26 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
GeronemoКто-нибудь, подтвердите плиз, правильные ли я завел таблицы и правильно ли их связал. А то у меня из-за сомнений проект на паузе стоит. Неправильно… Сходите в настоящую библиотеку, посмотрите на каталоги, подумайте, почитайте ГОСТ на библиографическое описание… Для начала, у вас есть книги, те самые, что можно взять в руки и поставить на полку. При поступлении в библиотеку они получают инвентарные номера (каждый экземпляр), их описывают (заводят карточки в каталоге) по вышеупомянутому стандарту, затем им присваивают шифр (по нему потом книгу ищут на полке). Читателю выдают не один из 10 экземпляров, в вполне конкретный, о чем в соотвествующем месте делается отметка. И т.д., и т.п. В общем, довольно нудно, но вполне осуществимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 17:50 |
|
||
|
Создал базу данных для освоения SQL
|
|||
|---|---|---|---|
|
#18+
автор … Сходите в настоящую библиотеку.. предлагали - ...взял бы готовый пакет для управления библиотекой и ... 16547756 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 18:06 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1540787]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
222ms |
get tp. blocked users: |
1ms |
| others: | 9ms |
| total: | 321ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...