Текущий архив: 2009.03.15;
Скачать: CL | DM;
Вниз
Значения полей БД Найти похожие ветки
← →
DevExpress (2009-01-23 12:52) [0]Всем привет!
Есть база. Таблицы:
Table1(Name Varchar(20)):
Вася
Петя
...
Коля
Nable2(FirstName Varchar(20), LastName Varchar(20))
Так вот, при занесении данных в Table2, данные для FirstName выбираются из списка, полученного из Table1, после чего выбранное значение заносится в Table2. Это как, нормально, с точки зрения реляционных БД? БД 10 как работает - проблем не было. Просто интересно.
← →
DevExpress (2009-01-23 12:53) [1]
> БД 10 как работает
10 лет
← →
Anatoly Podgoretsky © (2009-01-23 12:57) [2]> DevExpress (23.01.2009 12:52:00) [0]
Это не нормально, первая таблица полностью дублирует вторую, правильно три таблицы
Table1(Name Varchar(20))
Table2(Name Varchar(20))
Table3(FirstName Varchar(20), LastName Varchar(20)))
← →
DevExpress (2009-01-23 13:03) [3]
> Anatoly Podgoretsky © (23.01.09 12:57) [2]
Первая используется в качестве справочника.
И что получится? Уже две таблицы будут дублироваться?
← →
Правильный$Вася (2009-01-23 13:10) [4]видел я как-то
справочник имен
справочник отчеств
справочник фамилий
и все это во всех падежах и родах
я рекомендовал бы хотя бы суррогатный ключ ввести в справочник и на него ссылаться
← →
Anatoly Podgoretsky © (2009-01-23 13:15) [5]> DevExpress (23.01.2009 13:03:03) [3]
Пока две, но это не предел.
← →
DevExpress (2009-01-23 15:14) [6]
> Anatoly Podgoretsky © (23.01.09 13:15) [5]
> Пока две, но это не предел.
ну да, там порядка 80 таблиц и все так сделаны:). Индексов нету. Но ниче, работает, вроде. И никто не жалуется:)
а с другой стороны:
Table1(id int, Name Varchar(20)):
Вася
Петя
...
Коля
Nable2(id_name int, LastName Varchar(20))
не одно ли это и то же? Какая разница, какой ключ? В первом случае ключ является значением.
← →
DevExpress (2009-01-23 15:17) [7]
> Правильный$Вася (23.01.09 13:10) [4]
не получится - нету исходников прил, которая работает с этой БД
← →
Sergey13 © (2009-01-23 15:17) [8]> [6] DevExpress (23.01.09 15:14)
Просто интересно каков объем БД и сколько наруду работает одновременно? Ну и СУБД какая?
← →
Jeer © (2009-01-23 15:18) [9]Почитай для начала о естественных и искусственных ключах.
← →
DevExpress (2009-01-23 15:18) [10]
> не получится - нету исходников прил, которая<>/b работает с
> этой БД
которОе
← →
Jeer © (2009-01-23 15:20) [11]
> не получится - нету исходников прил, которая работает с
> этой БД
А чего тогда обсуждать ?
Работает и ладно - тем более 10 лет :)
← →
Anatoly Podgoretsky © (2009-01-23 15:22) [12]> DevExpress (23.01.2009 15:14:06) [6]
Не одно и тоже, в этом случае нет дублирования, это уже чистый справочник и внешние ключи.
В первом случае это вообще не ключ, а просто лишняя таблица.
← →
DevExpress (2009-01-23 15:23) [13]
> Jeer © (23.01.09 15:18) [9]
> Почитай для начала о естественных и искусственных ключах.
>
ммм.... Да я-то знаю! Мне просто интересно, как я и написал в первом посте.
> Sergey13 © (23.01.09 15:17) [8]
SQL Server 2005 - это сейчас, первоначально, наверное более ранняя была.
Народу мало - чел 10
Объем не знаю(сейчас нет доступа), а по записям, где-то 4млн(в основной таблице, где есть три поля text:)).
← →
DevExpress (2009-01-23 15:24) [14]
> Jeer © (23.01.09 15:20) [11]
ну обсуждают же люди погоду?
← →
Ega23 © (2009-01-23 15:30) [15]1. У некоторых людей может быть составное имя, фамилия и отчество.
Пример: Анна-Мария, Магомед-Гаджи, Бонч-Бруевич, и т.п.
2. Полное имя человека может быть больше чем обычное ФИО.
Пример: барон Пампа дон Бау но Суруга но Гатта но Арканара, Ахамат Хаким-Заде Ниизи, Лис Гарсия Педро и т.п.
3. У различных национальностей может вообще отсутствовать понятие Фамилия или Отчество (AFAIK, у монголов фамилии в нашем понимании нет).
Поэтому. Вся эта нормализация в конкретном данном случае может быть применена только с очень жёсткими оговорками. Ну, типа, иностранец никогда в эту базу не попадёт.
А в целом - Заведи поле FullName varchar(255) и в него пиши.
← →
Sergey13 © (2009-01-23 15:31) [16]> [13] DevExpress (23.01.09 15:23)
Что-то говорит мне, что или ты чего то не то говоришь либо жаловаться у вас запрещено коллективным договором. 8-)
← →
Anatoly Podgoretsky © (2009-01-23 15:34) [17]> DevExpress (23.01.2009 15:24:14) [14]
На этом форуме между прочим, а серьезно в Потрепаться.
← →
DevExpress (2009-01-23 15:36) [18]
> Ega23 © (23.01.09 15:30) [15]
спасибо за совет, но мне с ней работать надо "как есть"
> Sergey13 © (23.01.09 15:31) [16]
Да не, говорю как есть - отчего недоверие? А на что жаловаться-то?
← →
DevExpress (2009-01-23 15:36) [19]
> Anatoly Podgoretsky © (23.01.09 15:34) [17]
Сорри, действительно попутал ветку
← →
Sergey13 © (2009-01-23 15:47) [20]> [18] DevExpress (23.01.09 15:36)
ну вот про это.
> ну да, там порядка 80 таблиц и все так сделаны:). Индексов нету.
← →
DevExpress (2009-01-23 15:53) [21]
> Sergey13 © (23.01.09 15:47) [20]
это я согласился с Анатолием и похвалился:)
← →
Ega23 © (2009-01-23 15:54) [22]
> спасибо за совет, но мне с ней работать надо "как есть"
Как есть - это дублирование данных. Хочешь сделать небольшую автоматизацию - выбирай из рабочей таблицы имена (фамилии, отчества) черезselect distinct name from table
, полученные данные загоняй в ComboBox со стилем csDropDown. Хочешь - выбираешь имя (фамилию) из списка. Не хочешь - вносишь ручками.
Смысла во второй справочной таблице в твоей реализации я не вижу.
← →
Anatoly Podgoretsky © (2009-01-23 15:59) [23]> Ega23 © (23.01.09 15:54) [22]
Я именно этот прием использую, с выпадающим списком и инкриментным поиском, пользователям удобно. Если такого значения нет, то пользователь вводит свое и в следующий раз оно уже будет в списке.
← →
Ega23 © (2009-01-23 16:01) [24]
> Я именно этот прием использую, с выпадающим списком и инкриментным
> поиском, пользователям удобно. Если такого значения нет,
> то пользователь вводит свое и в следующий раз оно уже будет
> в списке.
Угу, я тоже когда с базой по персоналу работал так делал.
← →
Anatoly Podgoretsky © (2009-01-23 16:04) [25]> Ega23 (23.01.2009 16:01:24) [24]
У меня как раз программа для ОК
← →
Ega23 © (2009-01-23 16:08) [26]
> У меня как раз программа для ОК
Ага, у меня - Бюро Пропусков.
Кстати, там и столкнулись с разными иностранными делегациями, когда хрен его знает, как данные какого-нибудь индуса в привычные ФИО впихнуть.
← →
Anatoly Podgoretsky © (2009-01-23 16:16) [27]> Ega23 (23.01.2009 16:08:26) [26]
Я впихиваю в два поля FirstName и LastName, у нас не используются отчества, в первое, то что считается имя, во второе все остальное и нет проблем.
← →
Ega23 © (2009-01-23 16:42) [28]
> Я впихиваю в два поля FirstName и LastName, у нас не используются
> отчества, в первое, то что считается имя, во второе все
> остальное и нет проблем.
А я сделал Name1, Name2 и Name 3. Первое - условная фамилия, второе - условное имя, третье - условное отчество.
Если у нас официально принята форма записи "Егоров Олег Вячеславович", то в той же Великобритании - "Олег Вячеславович Егоров".
А там - что хочешь, то и кидай. Конечный order by будет Order By Name1, Name2, Name3 :)
← →
DevExpress (2009-01-23 17:03) [29]
> Ega23 © (23.01.09 15:54) [22]
> Anatoly Podgoretsky © (23.01.09 15:59) [23]
Да, хороший способ, так и сделаю, спасибо за совет.
Страницы: 1 вся ветка
Текущий архив: 2009.03.15;
Скачать: CL | DM;
Память: 0.52 MB
Время: 0.041 c