|
|
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
Добрый день. Я новенькая на сайте, и только учусь, но буду очень признательна, если мне кто-то поможет? Вопросики. 1 Что с этой табличкой не так? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Я так понимаю она избыточная? То есть из этой таблички можно было бы сделать несколько табличек? 2.Оранжевым виделены 3 дублирующие строчки. Какой нужно выполнить запрос, чтобы найти дублирующие записи? 3.МОжет ли в подобной табличке быть композитный ключ?Какие бы колонки вы бы выбрали за для композитного ключа? 4.Какой нужно сделать запрос , чтобы последнюю строчку и удалить дублирующие записи? Буду очень признательна ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2010, 18:37 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
little_lillyДобрый день. Я новенькая на сайте, и только учусь, но буду очень признательна, если мне кто-то поможет? Вопросики. 1 Что с этой табличкой не так? Код: plaintext 1. 2. 3. 4. 5. 6. 7. То есть из этой таблички можно было бы сделать несколько табличек? 2.Оранжевым виделены 3 дублирующие строчки. Какой нужно выполнить запрос, чтобы найти дублирующие записи? 3.МОжет ли в подобной табличке быть композитный ключ?Какие бы колонки вы бы выбрали за для композитного ключа? 4.Какой нужно сделать запрос , чтобы последнюю строчку и удалить дублирующие записи? Буду очень признательна ))) 1. Нужно знать что описывают данные, хранящиеся в таблице. То есть какие атрибуты что означают. 2. Почему это они "дублирующие"? У них же время разное. 3. Может. Но см. ответ по п.1 4. Это вопрос по конкретному диалекту SQL - нужно знать на какой СУБД вы собираетесь работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2010, 19:51 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
SQL*Plus, автор1. Нужно знать что описывают данные, хранящиеся в таблице. То есть какие атрибуты что означают. Может быть названия полей намекнут на тип данных? авторID, NAMELEVEL,DATEBEGIN,COUNTSS,SALARY,TRUEFALSE,DATAINSERT автор3. Может. Но см. ответ по п.1 а можно привести пример? Код: plaintext можно ли пример на Oracle / MSSQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2010, 19:57 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
little_lilly, название полей я привела для этого результата автор 1000874 EEER 4/13/2010 100 452.32 B 4/13/10 5:06 AM 1000874 EEER 4/13/2010 100 452.32 B 4/13/10 5:07 AM 1000874 EEER 4/15/2010 60 452.32 S 4/13/10 8:06 AM 1000874 EEER 4/13/2010 100 452.32 B 4/13/10 5:08 AM 1000874 EES 4/13/2010 80 125.4 B 4/13/10 5:06 AM 1000874 EES 4/13/2010 450 126.8 B 4/13/10 5:06 AM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2010, 19:59 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
автор ID NAMELEVEL SALARY TRUEFALSE DATEINSERT DATEBEGIN COUNTSS 224 EEEE 4 A 5/13/10 5:06 AM 4/13/2007 55 22224 EEEE 4 A 5/13/10 5:07 AM 4/13/2007 55 22224 EEEE 4 A 5/13/10 5:08 AM 4/13/2007 55 22224 EEEE 4 K 5/13/10 8:06 AM 4/15/2007 60 22224 AD 2 A 5/13/10 5:06 AM 4/13/2007 80 22224 AD 1 A 5/13/10 5:06 AM 4/13/2007 66 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2010, 20:15 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
little_lillyДобрый день. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Я так понимаю она избыточная? Для избыточности должны быть как минимум две ф-ии зависимомсти: транзитиваня зависимость. Какие видны: третья колонка ф-но не зависит от второй из-за последних двух записей. Будь там две 2-ки или 1-ци, можно было бы надеяться. четвертая не зависит от второй из-за значения К. По этой же причине и четвертая не завистит от третьей. Остальные тоже не зависят от второй. От третьей и четвертой тем более. Есть завимости всех колонок от первой, и есть зависимость второй, третьей и четвертой от последней. И есть зависимость второй от третьей Поскоку перая не завист от последней и от третьей, то возможны две транзитивные зависмости. Т.е. в данном состоянии таблы они есть, но нуно быть уверенным, что и в будующем останутся. Последняя, это какой-то Count. Т.е. скорей всего эта зависимость нарушится. Достотачно, например, чтобы появилась, запись в которой вторая AD, а посленей 55. Остается второй от третьей. Однако, как Вам сказали нуно знать про зависмости между данными в реале, чтобы быть уверенными, что зависимости сохраняться во всех состояниях таблы в будующем. Т.е. если счас разбить на две таблы, а потом зависимость нарушится, то таблы будут не адекватны реалу: в них незя буит занести инфу, которая нарушает зависимость. Чтобы нарушилась зависимость второй от третьей досстаточно появиться записи, хде в третье 4 а во второй AD. Ну так примерно, если нигде ниче не упустил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2010, 22:23 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
Я все же не могу найти ответы на эти вопросы... (( 2.Оранжевым виделены 3 дублирующие строчки.(Может здесь есть подковырка?) Какой нужно выполнить запрос, чтобы найти дублирующие записи? 3.МОжет ли в подобной табличке быть композитный ключ?Какие бы колонки вы бы выбрали за для композитного ключа? 4.Какой нужно сделать запрос , чтобы последнюю строчку и удалить дублирующие записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2010, 23:00 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
little_lillyДобрый день. Я новенькая на сайте, и только учусь, но буду очень признательна, если мне кто-то поможет? Вопросики. 1 Что с этой табличкой не так? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Я так понимаю она избыточная? То есть из этой таблички можно было бы сделать несколько табличек? 2.Оранжевым виделены 3 дублирующие строчки. Какой нужно выполнить запрос, чтобы найти дублирующие записи? 3.МОжет ли в подобной табличке быть композитный ключ?Какие бы колонки вы бы выбрали за для композитного ключа? 4.Какой нужно сделать запрос , чтобы последнюю строчку и удалить дублирующие записи? Буду очень признательна ))) Так все-таки , что не так с табличкой? мне кажеться, что это таблица-фактов в Датаварехаусе.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 01:11 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
little_lilly пишет: > 1 Что с этой табличкой не так? > > > *22224* EEEE *4* A *5*/*13*/*10* *5*:*06* AM *4*/*13*/*2007* *55* > *22224* EEEE *4* A *5*/*13*/*10* *5*:*07* AM *4*/*13*/*2007* *55* > *22224* EEEE *4* A *5*/*13*/*10* *5*:*08* AM *4*/*13*/*2007* *55* > *22224* EEEE *4* K *5*/*13*/*10* *8*:*06* AM *4*/*15*/*2007* *60* > *22224* AD *2* A *5*/*13*/*10* *5*:*06* AM *4*/*13*/*2007* *80* > *22224* AD *1* A *5*/*13*/*10* *5*:*06* AM *4*/*13*/*2007* *66* > > > Я так понимаю она избыточная? Конечно, избыточная. Вот зачем в первой колонке например столько двоек ? Хватит одной. Или пишите тогда 22...4 > 2.Оранжевым виделены 3 дублирующие строчки. > Какой нужно выполнить запрос, чтобы найти дублирующие записи? SELECT DUPLICATED * from MyTable > 3.МОжет ли в подобной табличке быть композитный ключ?Какие бы колонки вы > бы выбрали за для композитного ключа? Я бы выбрал колонку, где записано значение "AM". > 4.Какой нужно сделать запрос , чтобы последнюю строчку и удалить > дублирующие записи? Не понял, что последнюю строчку ? А так DELETE ALL DUPLICATING ROWS from MyTable Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 11:51 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
vadiminfo пишет: > Для избыточности должны быть как минимум две ф-ии зависимомсти: > транзитиваня зависимость. > Какие видны: > третья колонка ф-но не зависит от второй из-за последних двух записей. Коллега, ну что вы вводите девушку в заблуждение ... Я вот вижу чёткую функциональную зависимость третьей колонки от второй. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 11:54 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Немного уточню насчет вопроса 4: нужно сделать запрос , чтобы оставить самую свежую (последнюю внесенную запись) строчку и удалить дублирующие ее (более старые) записи? Очень вам спасибки большое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 12:11 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
MasterZiv little_lilly пишет: SELECT DUPLICATED * from MyTable DELETE ALL DUPLICATING ROWS from MyTable у меня MSSQL 2000 - не понимает он слов DUPLICATED,DUPLICATING Server: Msg 156, Level 15, State 1, Line 1 Incorrect syntax near the keyword 'from'. Server: Msg 156, Level 15, State 1, Line 1 Incorrect syntax near the keyword 'ALL'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 12:30 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
little_lilly, Естественно не понимает, т.к. это не T-SQL. Впрочем вы же сами писали, что работаете с SQL*Plus? фотка в профиле повысит ваши шансы получить быстрый ответ )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 12:53 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
little_lilly пишет: > у меня MSSQL 2000 - не понимает он слов DUPLICATED,DUPLICATING Да что ты говоришь ? Дело в том, что эту строчку надо отдать программисту, который возмёт структуру даных, спецификацию на систему, и напишет запрос на языке SQL, который сделает то, что нужно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 13:10 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
little_lilly пишет: > Очень вам спасибки большое :) Не благодари меня ... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 13:11 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
Критикlittle_lilly, Естественно не понимает, т.к. это не T-SQL. Впрочем вы же сами писали, что работаете с SQL*Plus? фотка в профиле повысит ваши шансы получить быстрый ответ )) ну сорри, что не указала...mssql 2000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 13:11 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
Ранние дубликаты можно найти например так: Код: plaintext 1. 2. на T-SQL переведите сами, все же учиться надо самой ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 13:23 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
MasterZiv vadiminfo пишет: Я вот вижу чёткую функциональную зависимость третьей колонки от второй. В предпоследней записи значение второй колнки AD а третьей 2 а впоследне записи соотвественно AD и 1. Это нарушает зависмость третьей колонки от второй. Имея во второй значение AD незя сказать что в третьей 1 или 2. Потому зависмости нет все же. Вот вторая от третьей в приведенном состоянии дает надежду на ФЗ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 18:34 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
Критик, Where здесь не самое лучшее решение. Решение должно быть универсальным. 5/13/10 5:06 5/13/10 5:07 5/13/10 5:08 Эти поля повторяются select * from #t where Insert_Tms>='4/13/10 5:08 AM' удалит и это поле 5/13/10 8:06 AM Between и т.д. (жестко прописывать условие по значением) здесь не самый лучший вариант. Можно ли как-то выбрать оранжевые поля по одинаковому признаку (может быть selfjoin?) и потом применить where по времени? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2010, 20:40 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
Вот в чем ошибся я так в том, что от первого все зависит, потому что отложилось, что это ID. Но от него ничего не зависит: значение то у него одно и то же. Рефлеск Павлова на ID выработался. Он, наоборот, зависит от любой колонки, в данном состоянии таблы. Либо по ошибке он одинаковый. А на самом деле как и положено ID, должен быть уникальным. Потому если вторая зависит от третьей, то первая транзативно зависит от третьей. (Однако, по прежнему третья не зависит от второй, как думает MasterZiv). Если что-то не должно повторяться, но повторяется по ошибке, то это, скорее, луче считать не избыточностью, а нарушением логических правил (нарушением целостности данных), которым должны соответсвовать данные. Потому шо это хуже избыточности: последняя тока создает проблемы контроля избыточности и риски потери информации, а первая уже искажение информации: объект один, но воспринимается как несколько разных. Это решается с помощью навязывания ОЦ отношения: ключей, обеспечивающих уникальность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2010, 01:57 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
vadiminfoВот в чем ошибся я так в том, что от первого все зависит, потому что отложилось, что это ID. Но от него ничего не зависит: значение то у него одно и то же. Рефлеск Павлова на ID выработался. Он, наоборот, зависит от любой колонки, в данном состоянии таблы. Либо по ошибке он одинаковый. А на самом деле как и положено ID, должен быть уникальным. Потому если вторая зависит от третьей, то первая транзативно зависит от третьей. (Однако, по прежнему третья не зависит от второй, как думает MasterZiv). Если что-то не должно повторяться, но повторяется по ошибке, то это, скорее, луче считать не избыточностью, а нарушением логических правил (нарушением целостности данных), которым должны соответсвовать данные. Потому шо это хуже избыточности: последняя тока создает проблемы контроля избыточности и риски потери информации, а первая уже искажение информации: объект один, но воспринимается как несколько разных. Это решается с помощью навязывания ОЦ отношения: ключей, обеспечивающих уникальность. Спасибо, немного приоткрыли глаза. Я думала еще насчет таблицы фактов в DWH, ей такой набор данных свойственен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2010, 12:40 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
А какая нормальная форма соответствует этой табличке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2010, 14:55 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
little_lilly, это зависит от того, что там за данные (пред.область, связи, зависимости, etc) навскидку - первая, м.б. вторая, но что-то непохоже. ЗЫ. MasterZiv, выдыхай )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2010, 22:17 |
|
||
|
Как вы хорошо знаете SQL
|
|||
|---|---|---|---|
|
#18+
little_lillyА какая нормальная форма соответствует этой табличке? Чтобы реално говорить об этом нужно знать предметную область, выявить функциональные зависимости (ФЗ). По текущему состоянию данных БД в табличке, если данные адекватны предметной области, можно тока сказать каких ФЗ уже точно нет. Поскоку те ФЗ что есть в данном состоянии БД могут нарушиться при добавлении новых данных. Но на скока я понял, возможно, данные не правильные: нарушена целостность данных. Вы там собрались шо-то удалять. Если данные не адекватны, то речь идет о рассуждениях в условиях неопределенности. Вообще то, Вы пытаетесь решить обратную задачу (ОЗ): идете не от предметной области (ПО) к табличкам, а наоборот. А ОЗ обычно не корректно поставлены. Если данные в табличке не адекватно отображают предметную область, нарушены ОЦ, которые там должны быть, то даже об отсувующих ФЗ судить сложно. Если данные меняться не будут, и они правильные, то чисто только по этим данным (без знания про их смысл, ПО) моно сказать в какой форме. Но поскоку их мало и меняться не будут, то практический эффект от нормализации, скорее всего слишком мал, чтобы на это тратить усилия. Если данные меняться будут и счас они правильные, то ранее я написал каких ФЗ точно нет, а какие могут быть. Но при добалении данных они могут пропасть. Т.е. есть неопределенность. Просто незя еще тока по этим данным сказать, что она находится в 3 или даже Бойса Кодда. На 4 и 5 анализировать ломно, но ить обчно далее 3 не идут в силу нескольких причин (возможной неполноты, сложности) Оптимизация выше третье может содержать неопределенность, либо процесс оптимизации завышенную сложность. Если данные не правильны, то их луче сначала исправить. Но лучшее из лучшего пойти от ПО к табличкам. А потом уже смотреть на адеватность, оптимальность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2010, 22:40 |
|
||
|
|

start [/forum/topic.php?fid=32&startmsg=36593156&tid=1542741]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
88ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
86ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 469ms |

| 0 / 0 |
