obshtestvo / sledi-parlamenta

Надежден инструмент за справки и анализ на парламентарната активност
http://parliament.obshtestvo.bg/
The Unlicense
13 stars 3 forks source link

DB design #17

Open antitoxic opened 11 years ago

antitoxic commented 11 years ago

Минимално искаме:

Профили на депутатите

Каквото има тук http://www.parliament.bg/bg/MP, ако има преповтарящи се депутати от предишното правителство значи и от тук : http://openparliament.net/deputies/). Тясно свързано с какво можем най-лесно да извлечем с crawler-а от #8

Още по-добре ще е, когато се пуснат декларациите тук: http://parliament.bg/register/?page=decl&instit_id=3#3 , но засега нищо няма там

Гласовете на депутатите

От https://github.com/obshtestvo/rating-gov-representatives/tree/master/apps/mp-votes . DB-то трябва да включва и темите по които се гласува, и регистрациите.

tsikov commented 10 years ago

Edit 4: Делегациите, Групите за приятелство и Комисиите са групирани в обща таблица за улеснение. В таблицата ще има колона „kind“ („type“ e заета дума) където ще пише какъв е типът на парламентарната структура. Други промени няма.

UPDATE: Този коментар (включително картинката) ще се променят с времето, като доизмислям базата.

Здравейте, колеги. Тъй като работата по писането на скриптовете напредва бавно, но методично, работата по измъдрянето на дизайна на базата данни става все по-наложителна. Тук ще предложа първоначална версия за релациите в базата. Тя е вдъхновена от модела на колегата написал сайта на джанго, от сайта на народното събрание, от българското законодателство и от собствения ми скромен опит в писането на „стъргач“ за събиране на информация за депутати.

Ето я и нея. db_schema4

  1. Един депутат гласува по много пъти => има много гласове.
  2. В едно гласуване има по много депутати, които гласуват.
  3. В една парламентарна сесия има много гласувания (дори по един и същи закон).
  4. В едно народно събрание (например 42-ро) има много парламентарни сесии.
  5. По един проектозакон може да се гласува много пъти, докато не го приемат... Гласува се на първо четене, на второ, гласуват се поправки, гласуват се и в комисии (не зная за това дали ще можем да съберем данни за гласуването в комисиите. Всъщност там се случват мнооого интересни неща. Стенограмите също са много интересни. Но това е оф-топик.) Не е възможно едно гласуване да е за 2 законопроекта едновременно.
  6. Една партия може да участва в повече от едно народно събрание. Нарочно не съм направил m2m, защото ще опрости схемата значително. Вместо това, всяка партия ще се създава наново с всяко следващо НС. Така ще се отрази и промените им в имената, коалициите и прочее.
  7. Една партия има много депутати. Понеже всяка партия се генерира наново с всяко НС, няма необходимост да правя и тази m2m, защото не може депутат да се прехвърли в друга парламентарна група. (Поне не и в правно отношение.) Само ще го маркирам non-affiliated, когато става независим.
  8. Един депутат може да задава много въпроси. На един депутат могат да му задават много въпроси. Просто в Question ще има 2 reference-а към Member. (Заедно с друга информация, разбира се.)
  9. Структурата може да е комисия, делегация или група за приятелство. Един депутат може да е по закон в не повече от 2 постоянни комисии. И все пак това е повече от една, да не говорим че има и временни комисии. Комисиите имат по повече от един депутата. Връзката е m2m, като пазим информация за това кога е влязал в групата и кога я е напуснал. Чл. 18. (1) Всеки народен представител може да бъде избиран най-много в две постоянни комисии. (2) Всеки народен представител може да бъде избран за председател само на една постоянна комисия.
  10. Eдна комисия разглежда повече от един проектозакон. Един закон може да бъде разглеждан от повече от една комисия. Много е важно да проследяваме това.
  11. Един депутат може да предложи по повече от един проектозакон. Един проектозакон може да бъде внесен от повече от един депутат или повече от една партия или от министерски съвет. Това още не е отразено в схемата. Но трябва да се дообмисли.
  12. Eдин проектозакон се превръща в един закон. Може да се направи circular reference и проектозакона да сочи към стария закон, но не е необходимо първоначално да се прави така. (т.е. струва ми се, че стойността на полезност/усилие е ниска) Чудя се дали изобщо се нуждаем от Bill и Law като отделни entities. Може да имаме само едното, но то да е с променящ се статус - от status "bill" да става "active" ако го приемат и т.н. Отворен съм за предложения. Когато написах горното забравих нещо много важно - един проектозакон има много поправки, които трябва да бъдат отразени - т.е един закон ще има нещо като много проектозакони - или различни версии на проектозакон. Идеята е, че ние ще следим и тези различни версии в един момент. (В първата итерация вероятно ще е само проектозакона качен на сайта.)

Да знаете, че бази данни не са най-силната ми страна. Тази тук е направена на базата (хехе) на това, какво искаме да събираме като информация. (Възможно е да съм изпуснал нещо, разбира се.) Отделно ще мислим и по това какви колони да има във всяка таблица.

Отворен съм за предложения, коментари и критики.

П.П. Сега видях, че не съм добавил таблица за въпроси. Според мен е важно да ги записваме и тях. Ще се погрижа да правя нова картинка скоро.

antitoxic commented 10 years ago

Диаграмата е супер.

Запитах ПДИ и ИРПС за функцията на "Група за приятелство" и "Делегациите". Ще имаме отговор тази седмциа предполагам.

antitoxic commented 10 years ago

Според Стефан от ПДИ:

Групи за приятелство

Група хора обединение около 1 идея която лобират. Най-често идеята е свързана с дадена страна. Например идва някой от Виетнам и избира депутати, които са били там или искат да отидат и се създава Група за приятелство с Виетнам. Официален начин да се лобира интереса на Виетнам в България

Делегациите

Неясно дали са специализирани, но са групи от хора които пътуват извън България и говорят по специфични теми, участия във форуми и конференции.

tsikov commented 10 years ago

В момента базата изглежда така:

varsion_one

Party и Assembly отидоха в таблицата Structures, а в последната има колона "kind" (няма как да е type, защото е запазена дума.) По този начин се спестява правенето и поддържането на 4 таблици без да се изгуби никаква функционалност. Все още нямаме таблиците Law и Versions - не сме ги „извлачили“ още.

Мисля, че се постигна добър резултат. Заявките не са сложни, даже напротив. Таблиците ще се увеличават с времето, разбира се.