1

Тема: Знімок даних

Хі!

От що зараз роблю: парсинг одної сторіночки. Періодично. Часто. На сторінці є табличка, типу {key: value, key: value}:

 __________
| key1 | value|
| key2 | value|
| key3 | value|
| key4 | value|
| key5 | value|
| key6 | value|
---------------

Деякі ключі можуть містити "Немає інфо", деякі можуть бути просто відсутні.

Думав спочатку: визначити одну БД таблицю з всіма можливими key1 (key2 ...) як стовпці (звісно NULL), value - значення, що буде записуватись в конкретний стовпець.

Але: деякі value доволі часто повторюються (їх всього 5-10 можливих для кожного key в БД). З погляду нормалізації - треба було б винести це все в окремі таблички, і через ForeignKey.

Але в мене сумнів: ця таблиця це ж результат періодичного парсингу, ніби знімку даних в певний момент часу. Чи не буде тут дірки в цілісності даних?

Не знаю можливо це я щось надумав бузпідставно просто - але рілі не знаю, як правильно поступити.

Подякували: ostap34PHP1

2

Re: Знімок даних

Що є ключем, що залежним значенням - залежить від конкретних даних.
Оскільки єдина інформація, яку ви надали про ці дані - це той факт, що вони знаходяться на сторінці, яку ви парсите, то нічого кращого за два TEXT-и я вам порадити не можу. Ніяких ключів тут немає і бути не може, бо ваші дані - це лише фрагменти тексту, і якщо навіть вони зараз повторюються, то як ви можете гарантувати, що це буде і надалі, якщо все, що відомо про них - це те, що це лише фрагменти тексту? От якби ви ще щось могли сказати про ці дані, то можна було б щось говорити детальніше.

Подякували: leofun011

3 Востаннє редагувалося Q-bart (31.07.2018 08:12:15)

Re: Знімок даних

Йо, ну от не можу сказати. Коомерційна таємниця.. Всі діла.

Спробую детальніше пояснити.

Є сайт на якому зберігається інфо про, образно кажучи, працівників на фабриці. Тоді табличка виглядає так:


|name|Max|
|surname|Lerber|
|age|12|
|working place|possible values: container, conveyor, office|
|factory district|many values [Франківський район, Солом'янський район, Печерський район ... ]|
|duty | values [wood processing, accounting, ... whatever else added by user]|

І цю інфо треба моніторити. Дані, як от напр вік, name - окремі філди. А от з тими даними що повторюються: обов'язки, як?

Прихований текст

Шарю, що це важко зрозуміти отак..

4

Re: Знімок даних

Тобто десь є БД. Вона видає дані в текстовому форматі. Ви хочете її моніторити на зміни (чи тримати локальну копію). Так? Тоді відтворюйте її структуру чи придумуйте свою схожу, але врахуйте, що розміри полів вам точно не відомі, можете із цим потрапити в халепу.
До речі, головне в базі - не як туди внести дані, а як їх звідти отримати. Якого типу запити до вашої бази будуть?

5

Re: Знімок даних

З точки зору нормалізації треба виносити однакові значення до іншої таблиці, якщо вони утворюють іншу сутність.
Тобто, наприклад, завтра кількох office manager переведуть на посаду office worker. Що це означає? Що утворена нова посада office worker і людей туди перепризначили чи що посада office manager перейменована на office worker? Ви з таким доступом не можете бути певні - а отже, все ж краще зберігати так, як є, текстом. Так, буде трохи більше місця, ніж могло б бути; але менше мороки зі змінами.
До речі, duty за логікою має щось спільне із working place; це ж теж має бути відображене у нормалізованій базі.
Коротше - не заморочуйтеся. Робіть просту копію, парою текстових полів; а якщо буде окреме завдання з розкладання збереженої інформації у власну базу - тоді і робитимете залежності.

Єдине що - як я розумію, там не одна табличка (чи не одна сторінка), а багато. Відтак, вам треба не просто key-value, а щось по типу table-key-value, page-key-value чи id-key-value зберігати.

Подякували: leofun011