Конференция "Базы" » ado и access
 
  • Кщд (29.06.11 19:06) [20]
    >SQLEXPRESS   (23.06.11 16:45) [15]

    >или последовательности, например четные/нечетные
    >ну или +10. т.е. все id заканчивающиеся на 1 - из одной БД. на 2 - из другой
    плохие, немасштабируемые решения
  • Кщд (29.06.11 19:08) [21]
    >SQLEXPRESS   (23.06.11 16:32) [12]
    >К тому же, считаю, что таблица без ключа - инвалид.
    аргументируйте?
  • Anatoly Podgoretsky © (29.06.11 19:29) [22]
    Как идентифицировать запись? Кому то придется взять на себя роль ключа, а некоторые вещи без ключа вообще не сделать.
  • Ega23 © (30.06.11 07:57) [23]

    >  Кщд   (29.06.11 19:08) [21]
    >
    > >SQLEXPRESS   (23.06.11 16:32) [12]
    > >К тому же, считаю, что таблица без ключа - инвалид.
    > аргументируйте?


    Первая нормальная форма.
  • Кщд (30.06.11 09:13) [24]
    Anatoly Podgoretsky ©   (29.06.11 19:29) [22]
    >Кому то придется взять на себя роль ключа
    с целью?
    напр., таблица связи многие ко многим - чем полезен ID?
    напр., таблица логов?

    >Ega23 ©   (30.06.11 07:57) [23]
    >Первая нормальная форма.
    т.е. наличие в БД хотя бы одной таблицы, не удовлетворяющей минимум 1НФ, говорит об ошибках проектирования? в этом аргумент или?...
  • Ega23 © (30.06.11 09:48) [25]

    > т.е. наличие в БД хотя бы одной таблицы, не удовлетворяющей
    > минимум 1НФ, говорит об ошибках проектирования? в этом аргумент
    > или?...


    Я ничего не имею против осознанной и разумной денормализации.
    Но раз ты так хочешь докопаться, то приведи пример, где таблица не удовлетворяет 1НФ. И сделано это осознанно.
  • sniknik © (30.06.11 10:00) [26]
    > ... чем полезен ID?
    > напр., таблица логов?
    приходишь с отпуска и видишь лог забит однотипными, и совершенно одинаковыми ошибками типа "сервер не доступен", или еще лучше "обновление времени завершилось ошибкой, время установлено в 0" (чтобы дата не взяла на себя "роль ключа", не отвлекала внимание)...
    чешешь репу и думаешь, а нафига мне такое счастье разглядывать одну бесполезную запись, и выискивать среди нее другие значимые. думаешь дайка оставлю только первую и последнюю обозначив "период сбоя"... автоинкрементный id-ключ помогут сделать это без проблем. полезно?
  • Игорь Шевченко © (30.06.11 10:42) [27]
    sniknik ©   (30.06.11 10:00) [26]


    > полезно?


    Избыточно

    Впрочем, у танцоров всегда найдется, чему помешать
  • sniknik © (30.06.11 10:51) [28]
    не, избыточно, это вот когда к примеру - есть у меня инфо-таблица где указана версия базы/приложения/время апдейта/время загрузки данных/... в общем всего 8 полей, и гарантировано и всегда должна быть только 1 строка (смысла нет тут историю вести, это оперативные данные, историю тех же апдейтов как раз в логах можно посмотреть)...
    вот тут ключ/авто инкремент избыточно, а в таблице в которой в теории, и с не нулевой долей вероятности возможно понадобится адресация к одной записи... (ну вот хотя бы показать лог в разбивке по чему то) это предусмотрительно...
  • Игорь Шевченко © (30.06.11 11:36) [29]
    sniknik ©   (30.06.11 10:51) [28]

    таблица логов таблице логов люпус эст. А ты берешься судить конкретный случай, и радостно говоришь - ага, а мне тут так надо, значит, это надо везде.
  • Кщд (30.06.11 11:46) [30]
    >sniknik ©   (30.06.11 10:00) [26]
    >автоинкрементный id-ключ помогут сделать это без проблем
    напр., в Oracle нет автоинкремента
    запись физически вставленная позже может иметь ID меньший, чем у записи вставленной ранее

    >Ega23 ©   (30.06.11 09:48) [25]
    >Но раз ты так хочешь докопаться,
    не хочу "докопаться" - просто не понял, в чем аргумент
    какая связь между 1НФ и ключом?

    >то приведи пример, где таблица не удовлетворяет 1НФ. И сделано это >осознанно.
    мы, например, активно используем в качестве типов полей пользовательские типы(Oracle, create type), т.о. в поле может храниться и объект и список объектов и таблица.
  • sniknik © (30.06.11 11:47) [31]
    > это надо везде.
    я не говорил что нужно везде, я привел пример, в ответ на вопрос, где это может быть полезно.
    если кто то видит в сказанном то, чего нет, это не проблема говорящего, это проблема восприятия слушающего.
  • Ega23 © (30.06.11 11:52) [32]

    > какая связь между 1НФ и ключом?

    Тебе ключ, как "primary key", или как уникальная сущность? Так я на все столбцы таблицы primary key наложить могу, в чём проблема-то?
    Или ты ведёшь речь о суррогатном identity-ключе? Ну в большинстве моих таблиц он присутствует, да. Но бывает, что и нет.
  • sniknik © (30.06.11 11:54) [33]
    > запись физически вставленная позже может иметь ID меньший, чем у записи вставленной ранее
    и что это меняет в плане адресации, в примере, для выбора и "оставления" двух (первой/последней) из кучи одинаковых?

    возьми да напиши пару запросов на удаление лишних с такой записью и без (поймешь "в чем аргумент"). только не нужно приводить пример/доказывать  возможность для сервера поддерживающих и дающих доступ к внутреннему идентификатору... я в курсе по такие. а не понимаешь (если не докапываешься) вроде как ты.
  • Ega23 © (30.06.11 12:01) [34]

    > запись физически вставленная позже может иметь ID меньший,
    >  чем у записи вставленной ранее


    В MSSQL тоже можно, я уже приводил пример.
    И чо?
  • Кщд (30.06.11 12:43) [35]
    >Ega23 ©   (30.06.11 11:52) [32]
    >Тебе ключ, как "primary key", или как уникальная сущность?
    можно по-простому, для дурачков ответить на вопрос: какова связь между 1НФ и ключом(суррогатным ли, естественным ли - не важно). На мой взгляд, это сравнение мокрого с зеленым. 1НФ утверждает наличие ключа? нет. Ключ в таблице гарантирует выполнение требований 1НФ? нет.
    так в чем аргумент?

    >Так я на все столбцы таблицы primary key наложить могу, в чём проблема-то?
    какая БД это позволяет? просто интересно.

    >sniknik ©   (30.06.11 11:54) [33]
    >возьми да напиши пару запросов на удаление лишних с такой записью и без >(поймешь "в чем аргумент").
    во-первых, не сталкивался с необходимостью удалять произвольные записи из лога - либо чистится весь, либо отсекается "хвост" по дате. вовсе не исключаю необходимости почистить записи, напр., в середине лога.
    просто объясните, причем здесь нормальные формы?
  • Кщд (30.06.11 12:44) [36]
    >Ega23 ©   (30.06.11 12:01) [34]
    >В MSSQL тоже можно, я уже приводил пример.
    >И чо?
    в MS SQL можно удалить дубликаты без ключа?
  • sniknik © (30.06.11 12:54) [37]
    > либо отсекается "хвост" по дате.
    вот она у тебя и выполняет роль идентификатора, неполноценного (все таки возможны случаи когда на одной "висит" несколько, но если  непринципиально то пофиг), не индексированного (значит отбор всегда перебором, , но если  редко то пофиг), а тебе приводили пример когда идентификатора нет, никакого.

    неспособен представить ничего кроме своего частного случая? вот кому надо бы адресовать Игорь Шевченко ©   (30.06.11 11:36) [29]

    > в MS SQL можно удалить дубликаты без ключа?
    можно. чуток сложнее чем с ключом.
  • Ega23 © (30.06.11 12:56) [38]

    > можно по-простому, для дурачков ответить на вопрос: какова
    > связь между 1НФ и ключом


    Дай определение ключа. Я не понимаю, что ты имеешь ввиду.


    > какая БД это позволяет? просто интересно.


    Под рукой сейчас только FireBird, пожалуйста:

    CREATE TABLE TTT (
       FLD1  INTEGER NOT NULL,
       FLD2  INTEGER NOT NULL,
       FLD3  INTEGER NOT NULL
    );

    ALTER TABLE TTT ADD CONSTRAINT PK_TTT PRIMARY KEY (FLD1, FLD2, FLD3);

  • Кщд (30.06.11 13:27) [39]
    >sniknik ©   (30.06.11 12:54) [37]
    >а тебе приводили пример когда идентификатора нет, никакого.
    ничего подобного
    напомню:

    > SQLEXPRESS   (23.06.11 16:32) [12]
    >К тому же, считаю, что таблица без ключа
    > - инвалид.

    > Кщд   (29.06.11 19:08) [21]
    > аргументируйте?

    >Ega23 ©   (30.06.11 07:57) [23]
    >Первая нормальная форма.


    >неспособен представить ничего кроме своего частного случая?

    >Кщд   (30.06.11 12:43) [35]
    >вовсе не исключаю необходимости почистить записи, напр., в >середине лога.

    >Ega23 ©   (30.06.11 12:56) [38]
    прошу прощения, не понял исходного сообщения - помстилось, что речь идёт о нескольких PK на одной таблице))

    коли речь о FB, то там есть ограничение на длину PK.
    напр., что будет в результате:

    CREATE TABLE TTT (
      FLD1  varchar(32765) NOT NULL,
      FLD2  varchar(32765) NOT NULL,
      FLD3  varchar(32765) NOT NULL
    );

    ALTER TABLE TTT ADD CONSTRAINT PK_TTT PRIMARY KEY (FLD1, FLD2, FLD3);



    так что - не аргумент.
 
Конференция "Базы" » ado и access
Есть новые Нет новых   [134431   +11][b:0][p:0.001]