From 92a3f2b8d748cbb0f20f718caaf0efde73c493f9 Mon Sep 17 00:00:00 2001 From: Fred Z Date: Tue, 24 Jul 2018 22:24:18 +0200 Subject: [PATCH] Adds Physical Data Model #2 & creates doc folder Updates README (URL's links), move docs files in new doc folder --- README.md | 8 ++-- approach.md => doc/approach.md | 0 documentation.md => doc/documentation.md | 14 +++--- doc/pdm.png | Bin 0 -> 12300 bytes doc/pdm.puml | 55 +++++++++++++++++++++++ 5 files changed, 64 insertions(+), 13 deletions(-) rename approach.md => doc/approach.md (100%) rename documentation.md => doc/documentation.md (86%) create mode 100644 doc/pdm.png create mode 100644 doc/pdm.puml diff --git a/README.md b/README.md index 3f81b83..61aa82d 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ _La dernière version à jour de ce document est disponible sur [github](https:/ - [Code source publié sur _Github_][4] - [Tableau agile][5] - [Modèle physique de données][6] -- [Script de création de votre base de données][7] +- Script de création de votre base de données - [Document texte expliquant la démarche][8] * difficultés rencontrées / solutions trouvées * lien _Github_ @@ -53,7 +53,7 @@ _La dernière version à jour de ce document est disponible sur [github](https:/ [3]: https://fr.openfoodfacts.org/ [4]: https://github.com/freezed/ocp5/blob/master/README.md [5]: https://github.com/freezed/ocp5/projects/1 -[6]: https://github.com/freezed/ocp5/blob/master/mpd.png +[6]: https://github.com/freezed/ocp5/blob/master/doc/pdm.png [7]: https://github.com/freezed/ocp5/blob/master/create-db.sql -[8]: https://github.com/freezed/ocp5/blob/master/approach.md -[9]: https://github.com/freezed/ocp5/blob/master/documentation.md#documentation "Project documentation" +[8]: https://github.com/freezed/ocp5/blob/master/doc/approach.md +[9]: https://github.com/freezed/ocp5/blob/master/doc/documentation.md#documentation "Project documentation" diff --git a/approach.md b/doc/approach.md similarity index 100% rename from approach.md rename to doc/approach.md diff --git a/documentation.md b/doc/documentation.md similarity index 86% rename from documentation.md rename to doc/documentation.md index 21e5898..fb9d3b1 100644 --- a/documentation.md +++ b/doc/documentation.md @@ -4,32 +4,28 @@ Documentation ## Created with - `python 3.6.4 ` -- ~`Requests`~ [`TODO #4`][4] +- `Requests` - ~`PyMySQL` or `openfoodfacts-python`~ [`TODO #4`][4] ## Installation 1. get the code : `git clone git@github.com:freezed/ocp5.git` -2. create a dedicated virtualenv : `python3.7 -m venv .venv; source .venv/bin/activate` -3. ~adds dependencies : `cd ocp5; pip install -r requirement.txt`~ [TODO #4][4] +2. create a dedicated virtualenv : `python3 -m venv .venv; source .venv/bin/activate` +3. adds dependencies : `cd ocp5; pip install -r requirements.txt` ## Collects data 1. [OpenFoodFacts data uses more than 170 fields][92]. Here are those we keep localy : ``` code -url -last_modified_t product_name categories_fr -purchase_places -stores nutrition-score-fr_100g ``` 2. Request will only ask for tagged products with `'countries':'france'` -3. ~Physical Data Model~ [`TODO #2`][2] +3. Physical Data Model -![-Physical Data Model-][2] +![-Physical Data Model-][96] 4. ~Creates local MariaDB/MySQL : `./create-db.py`~ [`TODO #2`][2] diff --git a/doc/pdm.png b/doc/pdm.png new file mode 100644 index 0000000000000000000000000000000000000000..89dce07a11f05c125b23b754bda4ce63f3e01170 GIT binary patch literal 12300 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 literal 0 HcmV?d00001 diff --git a/doc/pdm.puml b/doc/pdm.puml new file mode 100644 index 0000000..706708f --- /dev/null +++ b/doc/pdm.puml @@ -0,0 +1,55 @@ +@startuml + +title Physical data model\n + +/' = = = = = = = STYLE = = = = = = = '/ +hide empty methods +hide circle +skinparam linetype ortho +skinparam class { + BackgroundColor<> lightblue +} + +/' = = = = = = = MACRO = = = = = = = '/ +!define rel(a,b,c,d,e) a c e +!define pyk(n,t="MEDIUMINT NOT NULL UNSIGNED") PK:n [t] +!define fnk(n,r,t="MEDIUMINT NOT NULL UNSIGNED") FK:n [t] +!define pfk(n,r,t="MEDIUMINT NOT NULL UNSIGNED") PFK:n [t] +!define att(n,u,s) {field} n [s] + +/' = = = = = = = CLASSE = = = = = = = '/ +class product +class category +class prod_category <> + +/' = = = = = = = RELATION = = = = = = = '/ +rel(product,1..,--,1..*,category) + +/' = = = = = = = KEY = = = = = = = '/ +class product { + pyk(id) + .. +} +class category { + pyk(id) + .. +} +class prod_category <> { + pfk(category_id,category.id) + pfk(product_id,product.id) + .. +} +/' = = = = = = = ATTRIBUTE = = = = = = = '/ +class product { + att(name,String,VARCHAR(200)) + att(nutrition_grades,String,VARCHAR(1)) +} +class category { + att(name,String,VARCHAR(200)) +} + +/' = = = = = = = ASSOCIATION = = = = = = = '/ +rel(product,.,--,.,prod_category) +rel(category,.,-,.,prod_category) + +@enduml