日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php上下属对应关系,由主分类 ID 取出(多个)下级子分类所对应的项,有没有什么好的办法?(其实似乎和 PHP 没什么直接关系?)...

發布時間:2023/12/9 php 44 豆豆

有一個表結構比如:

```

項目:

項目ID

項目名

分類ID

...

```

```

還有一個多級分類結構:

分類1

+ 分類1.1

++ 分類1.1.1

+++ 分類1.1.1.1

+++ 分類1.1.1.2

+ 分類1.2

分類2

...

```

假定我現在有分類1的序號,現在想通過這個序號取出對應分類1及其子項中的所有項目的列表,請問有沒有什么方便快捷的解決方案?最好能O(1)解決的。

目前想到的方法:

1、項目里新增一個字段(暫時稱為“分類路徑”),存儲一個線性數據,用來儲存分類的路徑,數據比如:分類1[分隔符]分類1.1[分隔符]分類1.1.1。做查詢的時候用LIKE從左開始匹配。

比如進到“分類1”的時候,搜索`分類路徑` = "分類1[分隔符]*"。

進到“分類1.1”的時候,搜索`分類路徑` = "分類1[分隔符]分類1.1[分隔符]*"。

但是LIKE這樣算不算濫用什么的?+ 如果遷移到一個沒有LIKE的數據庫不就歇菜了么。

2、新建一個數據表,類似于:

```

項目分類路徑們:

項目ID

隸屬于分類

```

然后當寫入項目的時候,爬出所選目標分類的路徑樹,比如

當一個項目被分配到“分類1.1.1.2”這個分類下,則依次寫入記錄:

```

項目ID:001

隸屬于分類:分類1.1.1.2

項目ID:001

隸屬于分類:分類1.1.1

項目ID:001

隸屬于分類:分類1.1

項目ID:001

隸屬于分類:分類1

```

相當于空間換時間了。但是這樣的話:

1、如果未來這個項目要變更分類記錄,就變得麻煩了,得刪掉之前所有的記錄,然后重新爬表(雖然可以優化掉一部分查詢);

2、得維護一張分類的全表樹形(或至少部分樹)結構的緩存來讓路徑計算變得更快一些、并借此降低用來獲得路徑的數據庫查詢次數,這很顯然增加了系統復雜度(因為需要處理比如緩存更新等等這樣的情況)。

好吧各位。所以我想的兩個方案都有缺點,你有啥辦法呢?請分享下見解。謝謝。

總結

以上是生活随笔為你收集整理的php上下属对应关系,由主分类 ID 取出(多个)下级子分类所对应的项,有没有什么好的办法?(其实似乎和 PHP 没什么直接关系?)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。