Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];

Вниз

Значения полей БД   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.051 c
2-1230972021
Pavelkq
2009-01-03 11:40
2009.03.15
OnClick по картинке в RichEdit.


8-1183819493
Наташкин
2007-07-07 18:44
2009.03.15
пишу графический редактор. Помогите кое в чем.


15-1231782243
dr_creigan
2009-01-12 20:44
2009.03.15
Excel. Копирование массива строк


2-1233132678
engine
2009-01-28 11:51
2009.03.15
MCISendString с флагом notify


2-1233051245
Ким12
2009-01-27 13:14
2009.03.15
TComboBox.OnDrawItem





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский