Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.54 MB
Время: 0.019 c
2-1232683437
AlexDan
2009-01-23 07:03
2009.03.15
Сепаратор.


15-1231952163
TMichael
2009-01-14 19:56
2009.03.15
SSH


3-1216316587
Новенький
2008-07-17 21:43
2009.03.15
Надо ли закрывать курсоры?


15-1231856375
Jeer
2009-01-13 17:19
2009.03.15
Кольцо сайтов "Научная книга" ?


2-1230782516
VirusO4eK
2009-01-01 07:01
2009.03.15
Свойство формы visible стандартно стоит false. Это нормально?