Как спроектировать базу данных моего приложения Django для размещения информации о нескольких уровнях элементов?

Я пытаюсь создать приложение на Django. Затрудняюсь с выбором схемы базы данных.

Существуют следующие таблицы:

1), таблица customer:

  • cust_name
  • cust_addr
  • cust_phone
  • created_date
  • ...

2), таблица customer_assets

  • customer (внешний ключ указывает на таблицу customer)
  • asset_type
  • asset
  • asset_update_time
  • asset_creation_time
  • ...

Основная проблема заключается в активе, типе актива (asset_type), образец данных выглядит следующим образом:

asset_type      asset
------------------------------------------
domain          aaa.bb.example.com
domain          *.corp.example.com
ip          10.1.2.3
ip          10.8.0.0/16
url         http://aaaa
url         http://bbbbb
url         http://aaa.bb.example.com/app1/login
email           xxx@example.com

есть некоторые активы, такие как *.corp.example.com, 10.8.0.0/16. Приложение должно выполнить обнаружение и найти под ними другие активы, например:

  • aaa.corp.example.com
  • bbb.corp.example.com
  • ccc.corp.example.com
  • 10.8.2.2
  • 10.8.2.3
  • ...

Затем приложение просканирует открытые порты на каждом из них, например:

  • aa.corp.example.com. (22, 80, 1080)
  • 10.8.2.2 (21, 139, 3306)

Затем приложение может просканировать все порты на активах, чтобы найти урлы, например:

  • aa.corp.example.com 80 /home.html
  • aa.corp.example.com 80 /admin.html
  • bb.corp.example.com 443 /console

Обратите внимание, что:

  • данные в customer_assets в основном предоставляются клиентом
  • данные в customer_assets содержат данные различных типов, например,

1), поддомены с подстановочным знаком (*.corp.example.com) и точные поддомены (aaa.bb.example.com).

2), точные поддомены в поддоменах с подстановочным знаком (*.corp.example.com) будут позже обнаружены

как лучше всего организовать схему базы данных?

1), является ли текущая схема базы данных для customer_assets нормальной?

2), где хранить обнаруженные поддомены типа aaa.corp.example.com? Нужно ли их добавлять в customer_assets как новый элемент, или создать для него новую таблицу?

3), где хранить данные ports, и URL для каждого port?

Клиенту может потребоваться поиск данных по доменному имени, по порту, по строкам в URL и т.д.

Спасибо

Я создал таблицу 1), таблицу customer и таблицу customer_assets, и она работает нормально.

но борется, как хранить данные, обнаруженные для домена *.corp.example.com, и как хранить более подробную информацию, обнаруженную как порты для каждого поддомена (например, порты 80, 22 для aaa.corp.example.com), и URL, обнаруженные для каждого порта (например, /admin.html для aaa.corp.example.com на порту 80)

Вернуться на верх