Готово
http {
## load whitelist
map $remote_addr $deny {
default 0;
include /path/to/whitelist.txt;
}
server{
## check
set $is_white_list 0;
if ($request_uri ~ ".*men.*"){
set $is_white_list 1;
}
if ($deny) {
set $is_white_list 1$is_white_list;
}
if ($is_white_list = 1) {
return 403;
}
##// epg check
}
Добавьте другую таблицу под названием BookAuthors со столбцами для BookID, AuthorID и NameUsed. Нулевое значение для NameUsed означало бы вытягивать его от таблицы Автора вместо этого. Это называют таблицей Intersection.
Для 1.. n отношения (у автора есть много книг, у автора есть много псевдонимов):
, При необходимости можно использовать посреднические таблицы для соединения авторов и книг, но с 1.. n отображение я не думаю, что это необходимо.
Для n.. m отношения (у автора есть много книг, книга имеет многих авторов):
необходимо было бы использовать посредническую объединяющую таблицу (author_id, alias_id, book_id) вместо внешних ключей в книжной таблице. Вы захотите сохранить внешний ключ от псевдонимов до автора (для легкого поиска псевдонимов автора, не имея необходимость идти с помощью всех их книг).
можно утверждать, что с точки зрения масштабируемости в будущем это - лучший способ начаться также, даже если начальная спецификация говорит, что что-то - 1.. n отношения. Вы найдете, что спецификации (или вопрос), как дали часто являются несоответствующими, таким образом, Вы захотите разработать общим способом для того, когда спецификации изменятся или разъяснены.
Вам были бы нужны три таблицы -
будет содержать книжный идентификатор, книжный заголовок и все другие информация, которую необходимо собрать о книге.
Автор содержал бы идентификатор автора, а также другую информацию, такую как Имя, фамилия, которую необходимо собрать о любом данном авторе.
BookAuthors был бы соединением many-many, содержа BookID, AuthorID и NameUsed. Это позволило бы книге иметь или нуль или многих авторов, чтобы автор имел или обнулил или много книг, и для получения информации о тех отношениях, которые будут получены. У Вас мог также, например, быть столбец на таблице BookAuthor, которая описала отношения автора к книге ("Отредактированный", "Переднее слово").
Это походит на many-many отношения, не 1-many. Я думаю, что Вы захотите использовать таблицу между теми двумя, которая позволяет Вам определять 1-many по обе стороны от этого. Проверьте это...
http://www.tekstenuitleg.net/en/articles/database_design_tutorial/8
Я думаю, что Вы в значительной степени там. Вам нужны таблица Books, таблица Authors и затем "authors_of_books" таблица с первичным ключом книги, первичным ключом автора, и "процитированный в качестве" текстового поля, показывающего, как тот конкретный автор был процитирован на той книге.
Учитывая, что доктор Bob и доктор Robert и Bob, доктор философии является всем одинаковым человек, они связались бы с той же строкой в таблице авторов.
Однако я думаю, в чем Вы нуждаетесь, таблица человека, на которую это создает ссылки. Вы могли также связать свою интересную таблицу человека с ним. Тем путем Автор Bob и Автор Robert, а также Интересный Bob связываются с Человеком Bob. Надежда, которая имеет смысл.
Первая вещь, которая приходит на ум, состоит в том, чтобы иметь таблицу ссылки, возможно, названную AuthorOf для соединения книг с их авторами.
столбцами был бы AuthorID, BookID и возможно CreditAs, таким образом, можно дифференцироваться между доктором Bob и Bob, доктором философии (А также псевдонимы как Stephen King и Richard Bachman).
И можно все еще однозначно определить автора.
Действительно похоже, что Вы желаете создать ряд пользовательских объединяющих таблиц, которые используются для соединения объектов от одного объекта до другого.
я запустил бы на самом детализированном уровне, человеке и сказал бы, что ЛЮБОЙ автор должен быть человеком. Я упростил бы тот процесс.
Составляют таблицу человека с информацией о человеке и PersonId, помещают информацию там.
Затем составляют таблицу BookAuthors, с 3 столбцами BookId, PersonId, TitledName. Таким образом, можно использовать другое имя в случае необходимости, в противном случае можно использовать COALESE или что-то подобное для получения имени по умолчанию, если TitledName является пустым.
Просто идея..
Что Вы спрашиваете, действительно не то, как Вы имеете дело с 1.. n отношения, но n.. n отношения (как эффективно на авторе и имеют много книг и одну книгу, может иметь многих авторов).
классический способ обработать это через промежуточную таблицу, таким образом
таблица Author (созданный, authorDetails) таблица Book (bookID, книжные детали) таблица AuthorBook (созданный, bookID)
, Если Вы действительно побеспокоены об изменяющихся именах автора затем, использует 1.. n автор детализирует таблицу, поэтому добавьте
AuthorDetails (созданный, itemID, authorDetails)
и удалите authorDetails из таблицы
автора